gpt4 book ai didi

python - jquery跨域ajax请求总是报错

转载 作者:太空宇宙 更新时间:2023-11-04 10:49:30 30 4
gpt4 key购买 nike

我正在尝试创建一个简单的 Jquery 移动应用程序。我的设置如下:

  1. jQuery 客户端正在 localhost:9090/myapp 上运行。
  2. 我的服务器运行在 localhost:9010/paperboy
  3. 因为我在 Windows 上,所以在服务器端我使用了一个简单的服务器,它使用“bottle”创建,这是一个 python 微框架。
  4. 服务器根据请求返回 json,我可以在 Chrome 或 Firefox 中清楚地看到。
  5. 我已经验证了我的回复,它是一个有效的 JSON。

我面临的问题是,我希望我的客户端从服务器响应中读取 json。
但是由于是跨域问题,所以不能这样做。
这是我的客户端 ajax 代码:

$.ajax({
url: "http://localhost:9010/paperboy/toi",
type:"GET",
data:$(this),
dataType:"jsonp",
//jsonp:"callback", no support on the server

success:function(result){
console.log("ajax result: " + result);
},

error:function(e){
console.log("Error :" + e);
}
});

我的 Bottle 服务器代码是:

from bottle import route, run, template, response
from paperboy import getToiNews

''' call http://localhost:9010/paperboy/toi in browser'''

@route('/paperboy/:source')
def index(source='All'):
print "requesting news list for %s" % source
resultJson = getToiNews()
response.content_type = "application/javascript"
return resultJson

run(host='localhost', port=9010)

然而,在运行该应用程序时,我最初收到“ajax 源策略错误”,一旦我将内容类型添加到我的服务器,该错误很快就消失了。
现在 ajax 调用没有错误,但总是调用“错误”处理程序。我尝试了各种组合,但都是徒劳的。我想不通的一件事是向我的服务器添加 jsonp 支持。
感谢您在此问题上提供的任何帮助,并提前感谢您提供的所有帮助。
谢谢。

最佳答案

你自己说了,因为它是一个跨源调用,默认情况下它是不允许的 SOP .

如果你控制着服务器(你就是),你可以使用 CORS允许请求。这适用于任何现代浏览器。 (虽然遗憾的是在 IE8 和 IE9 的情况下,您需要一个 jQuery 补丁来启用 Microsoft 特定的 XDomainRequest 对象而不是标准的 XMLHttpRequest;jQuery团队拒绝将其放入库中。IE10 终于在 XMLHttpRequest 中添加了跨域处理。)

或者,由于响应是 JSON,您可以使用非常相似的 JSON-P相反,它具有适用于所有浏览器的优势(无需 jQuery 补丁)。

关于python - jquery跨域ajax请求总是报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14849463/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com