0

ネットワーク上でPOSTリクエストが成功したことを確認できたにもかかわらず、jQuery.ajax呼び出しがコールバック関数を呼び出さなかった理由を理解しようとしばらく時間を費やしました。

私のコードは次のようになりました。

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パラメーターが$.ajaxnull値が渡されることを好まないということでした。

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