我有这段代码
function getMesssages(id,c) {
function waitForServerCall(id,c) {
$.get(href("~/polling/" + id), function (response) {
var r = c(response);
if (r) {
return false;
}
waitForServerCall(id);
});
}
waitForServerCall(id,c);
$.post(href("~/batch/export/?batches=3344&pollid=" + id), function (response) {
c(response);
cancelCall = true;
});
}
waitForServerCall
方法中的$.get只有在$.post收到服务器响应时才会执行。为什么?
这是ajaxSettings:
accepts: Object
async: true
contentType: "application/x-www-form-urlencoded; charset=UTF-8"
contents: Object
converters: Object
flatOptions: Object
global: true
isLocal: false
jsonp: "callback"
jsonpCallback: ()
processData: true
responseFields: Object
type: "GET"
url: "http://localhost:59161/"
xhr: In()
__proto__: Object
更新 我正在做的是长轮询,post请求是一个长时间运行的进程,所以我需要知道服务器将触发的一些事件,waitForServerCall方法通知客户端发生的事件。但是,由于$ .get方法在$ .post响应被重新执行后执行,因此通知过程无效。
更新1: 我使用.NET 4.0和Jquery 1.9.1。
是的,$ .get请求首先执行,但在$ .post获得响应之前不会响应。一旦$ .post得到响应,$ .get就能正确执行。但即使$ .post尚未得到任何响应,我也期待$ .get获得服务器响应。
答案 0 :(得分:0)