我正在使用JQuery进行AJAX,但每次“onSuccess”事件必须在另一个AJAX请求断开后执行。
以下是代码:
d.ajax({
url: f.options.url.offline,
dataType: "jsonp",
jsonp: "callback",
cache: false,
data: {
status: "offline",
ticket: f.connection.options.ticket
},
success: function(g) {
f._offlineSuccess()
},
error: function() {
f._offlineError()
}
})
我的所有AJAX请求都是JSONP,当触发上面的代码时,还有另一个AJAX连接(长轮询请求,最后约10秒)已经同时建立。因此,“f._offlineSuccess”函数总是在另一个AJAX连接断开后执行。
我看不到两个AJAX请求之间的任何关系,我不知道为什么必须在另一个AJAX连接停止后执行“onSuccess”函数。
感谢任何帮助〜
================================
更新
我刚刚发现如果我同时有两个JSONP连接,“onSuccess / onFailure”功能将被阻止。我不知道是否有人遇到过同样的问题?
答案 0 :(得分:2)
Ajax请求是异步的。因此,新的请求不会完成前一个请求。如果您希望该行为使用async参数为false,或使用complete()函数调用另一个请求。只有在第一个请求完成时才会触发。
UPDATE 对于JsonP使用jQuery.getJSON(),如果调用成功,则在回调时执行第二个请求。
function (data, textStatus) {
// data will be a jsonObj
// textStatus will be one of the following values:
// "timeout","error","notmodified","success","parsererror"
this; // the options for this ajax request
}
答案 1 :(得分:0)
如果使用firebug - net选项卡,您将能够看到两个jsonp请求的完整URL。您应该能够在URL的末尾看到回调函数名称。这些是不同的还是相同的?我只能假设他们是一样的。