我有这个代码用于验证但它显示错误,即使它返回true。我将所有返回false更改为true但显示错误。 第二,我想要显示result.message而#34;用户名已经被采取"。
$.validator.addMethod("uniqueUserName", function (value, element) {
$.ajax({
type: "post",
url: "/validation/search",
data: {
nationalCode: $('#karkonan_MelliCode').val(),
personType: $('#karkonan_MelliatCode').val()
},
dataType: "json",
async: false,
success: function (result) {
// alert(result.message);
// alert(result.resultCode);
// if the user exists, it returns a string "true"
if (result.resultCode == "0") {
alert($('#karkonan_MelliatCode').val());// already exists
//j = result.message;// already exists
return false;
}
else {
alert($('#karkonan_MelliatCode').val());
return true; // username is free to use
}
},
error: function (result) {
// if the user exists, it returns a string "true"
alert("error");
return false;
// username is free to use
}
})
}, "Username is Already Taken");
它的规则是:
'karkonan.MelliCode': {
number:true,
minlength: 10,
maxlength: 10,
required: true,
withmelliat:true,
uniqueUserName: true
},
答案 0 :(得分:1)
您的addMethod
可能需要立即回复。
您执行Ajax并且响应是异步的。 return
和success
处理程序中的error
语句不适用于addMethod
返回值(在Ajax请求之后和响应之前立即完成)。
要检查,请在此处添加return true;
:
});
return true;
}, "Username is Already Taken");
我已经解决了这个问题,我已经(并且你有)阅读了你的validator plugin documentation。
您还必须阅读此插件的remote
属性:here the documentation。
答案 1 :(得分:0)
error
是一个函数,如果AJAX请求失败,则称为 ,而不是脚本返回错误!
该函数接收三个参数:
jqXHR
(在jQuery 1.4.x中,XMLHttpRequest
)对象,描述发生的错误类型的字符串和可选的异常对象(如果发生)。
第二个参数(null
除外)的可能值为timeout
,error
,abort
和parsererror
。发生HTTP错误时,errorThrown
会收到HTTP状态的文本部分,例如Not Found
或Internal Server Error
。
从jQuery 1.5开始,错误设置可以接受一系列函数。每个函数将依次调用。 注意:此处理程序不会针对跨域脚本和跨域JSONP请求调用。
有争议的是,success
是一个被称为的函数,如果AJAX请求本身成功,即浏览器可以正确发送请求。
该函数传递了三个参数:
从服务器返回的数据,根据dataType
参数格式化;描述状态的字符串;和jqXHR
(在jQuery 1.4.x,XMLHttpRequest)对象中。