2014-02-07 98 views
0

我有以下的javascript:布爾變量警報爲假後,被設置爲true

var wasSuccessfull = false; 

$.ajax({ 
    url: 'url here', 
    type: 'POST', 
    data: JSON.stringify(jsondata), 
    dataType: 'json', 
    contentType: 'application/json' 
}).success(function (data, status) { 

    if (status == 'success') { 
     if (data.hasOwnProperty('d')) { 
      if (typeof successCallback === 'function') { 
       successCallback(sender, data.d, true); 
      } 
     } 
     else { 
      if (typeof successCallback === 'function') { 
       successCallback(sender, data.d, true); 
      } 
     } 
    } 

    wasSuccessfull = true; 

}).fail(function (jqHXR, status, errorThrown) { 

    if (typeof failureCallback === 'function') { 
     failureCallback(sender, status + ': ' + errorThrown + '<p>StackTrace: ' + jqHXR.responseText + "</p>", true); 
    } 

}); 

if (typeof returnTrueOrFalse === 'boolean' && returnTrueOrFalse) 
    alert(wasSuccessfull); 

在我設置wasSuccessfullfalse以後如果Ajax調用全成它被設置爲true,並在開始結束我alert()它出來。

即使wasSuccessfull設置爲truealert()警報值:false

有人可以告訴我這是爲什麼嗎?

回答

1

returnTrueOrFalse必須爲true,以便提醒wasSuccessfull的初始值。

$ .ajax是異步的,即使您的警報代碼位於調用之後,它們將同時運行,但ajax調用的結果將發生得太晚。如果您希望在請求完成(成功與否)時觸發警報,則應更改代碼。

http://api.jquery.com/jquery.ajax/,你可以看看完整的回調選項。

2

這是因爲Ajax調用是異步的,此代碼:

if (typeof returnTrueOrFalse === 'boolean' && returnTrueOrFalse) 
    alert(wasSuccessfull); 

的結果從AJAX調用中檢索之前被調用。

您應該警告成功回調中的值。

相關問題