0

我对 jQuery 1.7.1 和 firefox 中的 ajax 函数有疑问。我正在做一个从 CMIS 服务器请求 json 的 ajax 调用。在 chrome 中一切正常。让我给你举个例子:

function ajaxCall(url, requestType, isAsync, parameters, doneCb, failCb) {
    $.ajax(url, {
        type: requestType,
        async: isAsync,
        data: parameters
    }).done(
        alert("test"),
        // the following function gets not executed in firefox with async: true
        function (result) {
            doneCb(result);
        }).fail(function (cause) {
            failCb(cause);
        });
}

Firefox 中的奇怪之处在于,如果我使用 async: false ,一切都像魅力一样。如果我使用 async: true ,也会执行 done 回调,并弹出带有消息“test”的警报。但是警报后的功能没有被执行。我google了很多,找不到这个问题的解决方案。

你是我最后的希望;)

谢谢和最好的问候,西蒙

我也尝试了老式的方法,但结果仍然相同 - 如果 async 为真,则不会在 firefox 中调用成功函数。

 $.ajax(url, {
        type: requestType,
        async: isAsync,            
        data: parameters,
        success: function(result){
            doneCb(result);
        },
        error: function(cause){
            failCb(cause);
        }
    });
4

1 回答 1

1

该代码正在获取alert并将其返回的内容分配给 done 的第一个参数。它在函数初始化时执行,而不是在done()实际调用方法时执行。

它应该看起来像

.done( 
    function() { alert("test") },
    function() { ... }
)
于 2013-10-11T12:40:32.897 回答