2013-10-11 45 views
0

我在jQuery 1.7.1和firefox中的ajax函數有問題。 我正在做一個從CMIS服務器請求json的ajax調用。在鉻一切正常。我給大家舉一個例子:jQuery ajax回調在Firefox中表現得很奇怪

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:true,那麼完成的回調也會被執行,並且會彈出警告消息「test」。但警報後的功能沒有得到執行。 我GOOGLE了很多,找不到解決這個問題的方法。

你是我最後的希望;)

感謝和問候, 西蒙

我也嘗試過的老式方法,但結果還是一樣 - 成功的功能不會被調用的火狐如果異步是真的。

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

刪除我的答案。剛注意到你使用的Jquery 1.7。這個建議是針對Jquery 1.8+的。對不起 – Liam

回答

1

該代碼走的是alert和分配什麼返回所做的第一個參數。它在函數初始化時執行,而不是在實際調用done()方法時執行。

它應該看起來像

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

感謝您的回覆。在我的原始代碼中,我沒有警報。我只是把它放在那裏看看發生了什麼。如果我在沒有提醒的情況下執行代碼,函數也永遠不會被調用:( – Simon