2012-08-06 62 views
0

我有這個驗證用戶提供密鑰的ajax函數。但警告來自Ajax響應前,由於其中,如果用戶提供了錯誤的關鍵,甚至可以訪問警報即將到來之前

$(document).ready(function() { 
    $('#submit').click(function(e) { 
     e.preventDefault(); 
     var key = $('#downloadkey').val(); 
     var dataString = {KEY:key}; 
     $.ajax({ 
      url: "/mediabox/home/validate_key", 
      type: 'POST', 
      data: dataString, 

      success: function(msg) { 
       if(msg=="true") 
       { 
        alert("do something"); 
       } 
       else 
       { 
        alert("Your download key is either wrong or you didn't provide it."); 
        return false; 
       }       

      } 
     }); 

    }); 
}); 

enter image description here

+1

**什麼?**我非常困惑....使用此代碼的 – Neal 2012-08-06 15:20:33

+0

,只有當此成功回調執行時(當它從服務器頁面獲得響應時),警報纔會到來 – Shyju 2012-08-06 15:21:01

+0

相信我當我提交形式我突然得到警報,而警報是在我的屏幕上時,我可以看到ajax調用仍然沒有完成,當我點擊確定的警報響應部分是空的,然後我看到迴應 – 2012-08-06 15:23:10

回答

0

是什麼讓你相信的警報是響應之前來了嗎?成功處理程序僅在響應成功接收到客戶端後纔會調用。

要確認,您可以編輯您的成功處理程序記錄響應:通過阻斷HTML動作

success: function(msg) { 
    console.log(msg); 
    if(msg=="true") 
    { 
     alert("do something"); 
    } 
    else 
    { 
     alert("Your download key is either wrong or you didn't provide it."); 
     return false; 
    }       
} 

另外,如果你使用的return false拒絕訪問給用戶,不會由於AJAX的異步特性而工作。

0

當請求完成時調用success函數。

成功(數據,textStatus,jqXHR)功能,陣列

函數。如果請求成功被調用。該函數獲得三個參數: 參數:從服務器返回的數據,根據 格式化dataType參數;描述狀態的字符串;和jqXHR (在jQuery 1.4.x,XMLHttpRequest中)對象。從jQuery 1.5開始, 成功設置可以接受一組函數。每個函數將依次調用 。這是一個Ajax事件。

成功處理程序中的代碼只會在AJAX請求完成後纔會執行。如果您事先收到警報,則表明請求已正確完成。