将POST数据从Web2py检索到本地HTML文件

时间:2012-03-30 16:05:48

标签: javascript jquery ajax cross-domain web2py

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

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

我已考虑将这些结果存储在数据库中,然后使用网址重定向检索它们 - 但我不确定我是否能猜出我需要的网址。也许只是抓住数据库中的最后一个条目。

或者有更好的方法吗?

我意识到可能有更好的方法直接从原始的本地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文件帖子看起来像(这个POSTS正确):

<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>

1 个答案:

答案 0 :(得分:1)

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

类似的东西:

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

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

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

你需要一个空元素,也许是div:<div id='some-element'></div>来包含响应。

这听起来像你需要的吗?如果我误解了,请告诉我。