我花了一段时间试图理解为什么我的jQuery.ajax调用没有调用回调函数,即使我可以在网络上看到POST请求成功。
我的代码看起来像这样:
var invokeService = function (url, action, parameters, callback, async, errorFn) {
var jqXhr = $.ajax({
async:async,
type:'POST',
cache:false,
url:url + '?action=' + action,
contentType:'application/json; charset=utf-8',
data:$.toJSON(parameters),
done:callback,
fail:errorFn
});
};
我这样称呼它:
invokeService(serviceUrl, 'ActionFn', {param:'one'}, successFn, null, failFn);
我不知道为什么我的回调在其他浏览器上被调用,而不是IE9。
我发布了我找到的答案,以便将来发生时可以再次找到它,因为我在这里找不到答案......
我发现 $.ajax
的 async
参数不喜欢在 IE9 中传入空值。
我将代码更改为显式使用 true
或 false
作为 async
参数,它开始工作:
var invokeService = function (url, action, parameters, callback, errorFn) {
var jqXhr = $.ajax({
async:true, //<--- In my case I could just hard code it, probably even remove this param.
type:'POST',
cache:false,
url:url + '?action=' + action,
contentType:'application/json; charset=utf-8',
data:$.toJSON(parameters),
done:callback,
fail:errorFn
});
};