0

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

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

4

1 回答 1

1

我发现当您在 IE9 中时,async参数$.ajax不喜欢传入空值。

我将代码更改为显式使用ortrue参数,它开始工作:falseasync

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
    });
};
于 2012-09-17T20:58:15.630 回答