3 回答
TA贡献1788条经验 获得超4个赞
如果查看jQuery.ajax()文档,则可以找到:
错误
如果请求失败,将调用的函数(...)注意:对于跨域脚本和跨域JSONP请求,不会调用此处理程序。这是一个Ajax事件。
因此,您不得不寻找解决方法。您可以指定超时以触发错误回调。这意味着应在指定的时间范围内成功完成请求。否则,假设它已失败:
$.ajax({
...
timeout: 5000, // a lot of time for the request to be successfully completed
...
error: function(x, t, m) {
if(t==="timeout") {
// something went wrong (handle it)
}
}
});
您代码中的其他问题...
尽管JSONP(可在此处和此处查看)可用来克服原始策略的限制,但您不能使用JSONP POST(请参阅CORS),因为那样行不通 -它创建了一个元素来获取数据,必须通过GET请求完成。JSONP解决方案不使用XmlHttpRequest对象,因此按照标准的理解方式,它不是AJAX请求,但是内容仍然可以动态访问-对最终用户而言没有区别。
$.ajax({
url: url,
type: "GET"
dataType: "jsonp",
...
其次,您提供的数据不正确。您正在将javascript对象(使用对象文字创建的)推送到网络上,而不是其序列化的JSON表示形式。创建JSON字符串(不手动,例如使用JSON.stringify转换器):
$.ajax({
...
data: JSON.stringify({u: userid, p: pass}),
...
上一期,您已将设置async为false,而文档则显示:
跨域请求和dataType:“ jsonp”请求不支持同步操作。
- 3 回答
- 0 关注
- 435 浏览
添加回答
举报