1
我想添加一個自定義驗證器,從服務器獲取一些信息。我知道remote
驗證方法,我不想使用它,因爲我試圖在自己的驗證器中封裝這個邏輯......因爲我需要在幾個地方重複它,並且想讓remote
免費用於其他事情。
雖然我的async
性質很艱難。在$.ajax
上關閉async
已被棄用,現在在jQuery 3.0
,我似乎無法找出任何其他方式讓它在返回結果之前暫緩,直到請求完成。
(function() {
$.validator.addMethod("customRemote", function (value, element, param) {
$.ajax({
url: `/api/url`,
dataType: 'json',
type: 'POST',
data: {id: param, value: value}
}).done(function (response) {
console.log('always executes later ...');
return response;
});
console.log('always executes first ...');
}, "Error message ...");
})();
我的服務器上的方法受到攻擊並完成所有應有的操作,並返回正確的結果。但驗證者在此之前得到迴應。我似乎無法得到它的工作。
我應該補充一點,我發送XHR
並將credentials
選項設置爲true,因爲只有經過身份驗證的用戶才能訪問服務器。
如果驗證器需要同步,則無法使用*非常*糟糕的做法或修改驗證器無法解決此問題。 –
這可能是你感興趣的。 https://jqueryvalidation.org/remote-method/ –
您可以使用遠程方法代碼(https://github.com/jzaefferer/jquery-validation/blob/master/src/core.js)作爲基礎,並實現你的customRemote。 –