2012-01-31 35 views
4

我在用戶配置文件編輯窗體上使用jquery驗證插件。我正在使用'遠程'功能來查詢我的網站,並檢查電子郵件的唯一性,這很好。我的問題是關於如何處理錯誤或失敗,這似乎沒有很好的記錄。我想要的行爲是,如果JSON查詢失敗或超時忘記驗證的這一部分,允許用戶提交併讓服務器端驗證照顧它。jQuery驗證插件遠程查詢 - 錯誤/失敗處理

我可以看到有一個錯誤屬性,它看起來像你可以添加一個函數來運行在這種情況下,但是如果超時/錯誤/失敗,我會放置什麼來關閉驗證規則?

remote: { 
       url: location.pathname + "/EmailUnique", 
       timeout: 20000, 
       data: { 
        userID: function() { 
         return $("#Form_EditProfileForm_userID").val(); 
        } 
       } 
      } 

回答

3

對了,補充誤差函數:

remote: { 
    //your normal $.ajax stuff here 
    , 
    error: function(jqXHR, textStatus, errorThrown) { 
     //deal with the error 
    } 
} 

這些參數的所有被傳遞到正常的jQuery ajax調用,因此通過指定error功能,你能處理無論發生什麼事。

假設您保存您的驗證對象變量v,你的錯誤的功能可能是這個簡單:

$('#inputWithRemote').rules('remove','remote');. 
v.pendingRequest--; 

老實說,在v.pendingRequest業務是處理我所說的錯誤在驗證插件 - 它會在啓動ajax請求時遞增pendingRequest計數器,但沒有自己的代碼來處理響應中的錯誤。

看到它的行動在這裏:http://jsfiddle.net/ryleyb/H96TD/(請注意,我已將超時設置爲2秒,並使用一些jsfiddle的特殊ajax代碼強制響應需要3秒鐘)。

+0

感謝您的回覆,我只是檢查回來執行一些事情,但我會在本週晚些時候使用它。 – user1181064 2012-02-20 21:02:33

+1

沒關係,無論哪種方式都是一個很好的問題 - 人們應該處理ajax中的錯誤,並且在這種情況下使用此插件會發生什麼並不明顯...... – Ryley 2012-02-20 21:38:18