jQuery ajax完成回调在firefox中表现得很奇怪

时间:2013-10-11 12:36:32

标签: javascript jquery ajax asynchronous

我遇到了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中的奇怪之处在于,如果我使用异步:false,一切都像魅力一样。如果我使用async:true,也会执行完成回调,并显示带有“test”消息的警告。但是警报后的功能没有执行。 我google了很多,找不到解决这个问题的方法。

你是我最后的希望;)

谢谢和最诚挚的问候, 西蒙

我也尝试过老式但结果仍然相同 - 如果async为true,则不会在firefox中调用success函数。

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

1 个答案:

答案 0 :(得分:1)

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

应该看起来像

.done( 
    function() { alert("test") },
    function() { ... }
)