我正在使用jQuery驗證控件遠程方法來測試數據庫中是否已存在電子郵件地址。第一次驗證觸發時,一切正常。但是,在後續驗證中,傳遞給Web服務的數據是舊數據,而不是輸入到文本框中的新數據。JQuery驗證插件:遠程方法數據問題
例如電子郵件地址被輸入到電子郵件文本框中,驗證觸發,結果如預期。電子郵件地址被更改,驗證再次觸發,但在檢查FireBug時,ajax數據是舊數據,而不是新數據。
因此無論文本框中有什麼,總是會傳遞以下數據。 {'email':'[email protected]'}
例如這些是規則設置。
rules: {
<%=txtGuestEmail.UniqueID%>: {
email: true,
remote: {
type: 'POST',
contentType: 'application/json; charset=utf-8',
cache: false,
async: false,
url: 'ajaxCheckout1.asmx/IsEmailAvailable',
// Use data filter to strip .d explained here http://encosia.com/2009/06/29/never-worry-about-asp-net-ajaxs-d-again/
dataFilter: function(data) {
var msg = eval('(' + data + ')');
// If the response has a ".d" top-level property, return what's below that instead.
if (msg.hasOwnProperty('d'))
return msg.d;
else
return msg;
},
dataType: 'json',
data: "{'email':'" + $('#ctl00_PageContent_txtGuestEmail').val() + "'}"
}
},
謝謝 - 這解決了這個問題。不知道我會想到這樣做! – Matt 2010-07-03 15:44:17
@Darin Dimitrov:我遇到了同樣的問題,但我想我做錯了什麼。我所有的驗證碼都放在'$(document).ready(function()'中。我從'$('#myform').validate'中刪除了'remote'規則的代碼,並且按照您的建議隔離它。 Firebug我可以看到我的服務不會再被調用了嗎?你的代碼片段是否完整?它就像'.rules'('add''完全被忽略了(我改變了url以匹配我之前使用的url) – citronas 2012-03-17 15:08:40