在IE9中,当异步参数指定为null时,jQuery.ajax不会调用回调



我花了一段时间试图理解为什么我的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。

发布了我找到的答案,以便将来发生时可以再次找到它,因为我在这里找不到答案......

我发现 $.ajaxasync 参数不喜欢在 IE9 中传入空值。

我将代码更改为显式使用 truefalse 作为 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
    });
};

最新更新