【问题标题】:Retrieving POST data from Web2py to local HTML file将 POST 数据从 Web2py 检索到本地 HTML 文件
【发布时间】:2012-08-01 00:17:52
【问题描述】:

我一直有一些严重的 jquery 跨域问题,所以我一直在尝试通过 web2py 解决这个问题。

我将 POST 数据从本地 HTML 文件发送到我的 web2py 服务器。然后,Web2py 将 python POST 发送到第二台服务器(这解决了跨域问题)并获得了预期的响应。我应该如何将该响应返回到我的本地 html 文件?

我曾考虑将这些结果存储在数据库中,然后使用 url 重定向检索它们——但我不确定我是否能够猜出我需要的 URL。也许只是从数据库中获取最后一个条目。

或者有更好的方法吗?

我意识到可能有更好的方法可以直接从原始本地 html 文件执行此操作并完全绕过 web2py,但我在 python 中比在 js 中更舒服。

所以我想从:

[本地 html 文件]->[POST 到 web2py]->[POST 到其他单独的服务器]->[响应返回到本地 html 文件]

我就是想不通最后一站。

我的控制器发布到第二台服务器(这个工作):

def index():
    response.headers['content-type'] = 'text/xml'
    xml = request.body.read()  
    query_args = { 'data': xml }
    encoded_args = urllib.urlencode(query_args)
    url = 'myserver.com'
    content = urllib2.urlopen(url, encoded_args).read()
    return response.render(dict(content=XML(content)))

我的本​​地 html 文件帖子看起来像(这个帖子正确):

<script language="javascript">
function check()
 {

jQuery('.myclass').each(function(){ 
       var txt = $(this).serialize();   
            $.ajax({
    type: 'POST',
    url: 'myserver',
data:  'mydata',
statusCode: {
    302: function() {
        alert("302"); // this is never called
    },
    200: function() {
        alert("200");
    },
},
success: function (data, textstatus) {
    console.log(data);

},
error: function (data) {
},

});

});
 }

</script>

【问题讨论】:

    标签: javascript jquery ajax cross-domain web2py


    【解决方案1】:

    您必须将代码放入“成功”处理程序中,该处理程序将 web2py 的响应写入本地 html 文档。

    类似:

    success: function (data, textstatus) {
       $('#some-element').html(data);
    },
    

    当发布请求发生时,您也可以让成功处理程序重定向到新页面,并以某种方式将 XML 数据存储在会话变量中并在新页面上查看它,但我认为仅在 javascript 中执行此操作会显着简化事情。

    编辑:我不确定您的数据的性质,所以如果它真的是 XML(而不是某种类型的 (X)HTML),那么您需要在成功回调中处理数据而不是编写它到一个 DOM 元素。

    您需要一个空元素,也许是一个 div:&lt;div id='some-element'&gt;&lt;/div&gt; 来包含响应。

    这听起来像您需要的吗?让我知道我是否误解了。

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2013-10-30
      • 1970-01-01
      • 2018-11-03
      • 2019-07-27
      • 2018-09-01
      • 2015-07-21
      • 1970-01-01
      相关资源
      最近更新 更多