我阅读了有关jQuery验证程序的答复,其中概述了一种根据数据库中的值检查用户名的方法。
香港专业教育学院试图实现此方法,但无论从PHP文件返回什么,我总是得到消息,用户名已被使用。
这是自定义方法…
$.validator.addMethod("uniqueUserName", function(value, element) { $.ajax({ type: "POST", url: "php/get_save_status.php", data: "checkUsername="+value, dataType:"html", success: function(msg) { // if the user exists, it returns a string "true" if(msg == "true") return false; // already exists return true; // username is free to use } })}, "Username is Already Taken");
这是验证代码…
username: { required: true, uniqueUserName: true },
有没有一种特定的方式我应该从php返回消息。
谢谢
一个
您正在执行一个AJAX请求,因此:自定义验证器返回true或false时,验证已经完成。
您将需要使用async。
async
就像是:
function myValidator() { var isSuccess = false; $.ajax({ url: "", data: {}, async: false, success: function(msg) { isSuccess = msg === "true" ? true : false } }); return isSuccess; }
警告:
从jQuery 1.8开始,不建议使用async:false和jqXHR($ .Deferred);您必须使用成功/错误/完成回调选项,而不要使用jqXHR对象的相应方法,例如jqXHR.done()或已弃用的jqXHR.success()。