2012-03-30 54 views
1

我一直有一些沉重的jQuery跨域问题,所以我一直试图通过web2py来解决这个问题。从Web2py检索POST数据到本地HTML文件

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

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

或者还有更好的方法吗?

我意识到有可能有更好的方法直接从原始的本地html文件做到这一点,并完全绕过web2py,但我比python更适合js。

所以我想从:

[本地HTML文件] - > [邮政的web2py] - > [POST到其他不同的服务器] - > [响应返回给本地的HTML文件]

我只是无法弄清楚最后一步。

我的控制器职位,以第2服务器(这工作):

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> 

回答

1

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

喜欢的东西:

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

当发布请求发生时,你可以选择性地具有成功处理重定向到一个新的页面,并以某种方式将XML数据存储在一个会话变量,看看它的新的一页,但我认为只是在JavaScript中这样做会大大简化事情。

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

您将需要一个空元素,可能是一个div:<div id='some-element'></div>来包含响应。

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