我一直有一些重大的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>
答案 0 :(得分:1)
您必须将代码放在“成功”处理程序中,该处理程序将web2py的响应写入本地html文档。
类似的东西:
success: function (data, textstatus) {
$('#some-element').html(data);
},
当发布请求时,您也可以将成功处理程序重定向到新页面,并以某种方式将XML数据存储在会话变量中并在新页面上查看,但我认为只需在javascript中执行此操作即可简化事情。
编辑:我不确定数据的性质,所以如果它确实是XML(而不是某种类型的(X)HTML)那么你需要在成功回调中处理数据而不是写它是一个DOM元素。你需要一个空元素,也许是div:<div id='some-element'></div>
来包含响应。
这听起来像你需要的吗?如果我误解了,请告诉我。