Ajax jQuery中的远程验证未验证
此表单将在my MYSQL数据库中插入电子邮件和密码 首先,我试图远程验证电子邮件,以确保它不存在,并且 Pswd和Pswd2相等 脚本将写入数据库,但验证不起作用。我对JQ和Ajax还不熟悉,所以任何帮助都会受到欢迎。 谢谢 表格:Ajax jQuery中的远程验证未验证,ajax,json,validation,jquery-mobile,Ajax,Json,Validation,Jquery Mobile,此表单将在my MYSQL数据库中插入电子邮件和密码 首先,我试图远程验证电子邮件,以确保它不存在,并且 Pswd和Pswd2相等 脚本将写入数据库,但验证不起作用。我对JQ和Ajax还不熟悉,所以任何帮助都会受到欢迎。 谢谢 表格: <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" /> <script src="http:
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
<script src="jquery.validate.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/additional-methods.min.js"></script>
...
<div data-role="content">
<form id="AddUser" class="ui-body ui-body-a ui-corner-all" data-ajax="true" >
<fieldset>
<div data-role="fieldcontain">
<label for="Email">Email Address:</label>
<input id="Email" type="email" />
<label for="Pswd">Password:</label>
<input id="Pswd" type="password" />
<label for="Pswd2">Confirm Password:</label>
<input id="Pswd2" type="password" />
</div>
<button type="submit" id="submit" data-theme="b" name="submit" value="submit-value">Submit</button>
</fieldset>
</form>
</div>
...
...
电邮地址:
密码:
确认密码:
提交
...
以下是文档中的js:
<script>
$(document).ready(function() {
var validator =
$('#AddUser').validate({
rules: {
Pswd: {
required: true,
},
Pswd2: {
required: true,
equalTo: "#Pswd"
},
Email: {
required: true,
email: true,
remote: "process/ValidateEmail.php"
}
},
messages: {
Pswd: {
required: "Provide a password",
},
Pswd2: {
required: "Repeat your password",
equalTo: "Enter the same password as above"
},
Email: {
required: "Not A Valid Email Address",
remote: "already in use"
}
}
}); // end var validator
if (validator)
{
$("#AddUser").submit(function(){
//make Variables
var emailVar =$('input[id=Email]').val();
var pswdVar = $('input[id=Pswd]').val();
var pswdconfirm = $('input[id=Pswd2]').val();
var querystring = "Email="+emailVar+"&Pswd="+pswdVar;
$.post("process/AddUser.php",querystring);
}); //end submit()
}; // end if validator
}); //end ready()
</script>
$(文档).ready(函数(){
var验证器=
$('#AddUser')。验证({
规则:{
Pswd:{
要求:正确,
},
Pswd2:{
要求:正确,
equalTo:“Pswd”
},
电邮:{
要求:正确,
电子邮件:是的,
远程:“process/ValidateEmail.php”
}
},
消息:{
Pswd:{
必需:“提供密码”,
},
Pswd2:{
必需:“重复您的密码”,
equalTo:“输入与上述相同的密码”
},
电邮:{
必需:“不是有效的电子邮件地址”,
远程:“已在使用中”
}
}
});//结束变量验证程序
if(验证器)
{
$(“#AddUser”).submit(函数(){
//制造变量
var emailVar=$('input[id=Email]')。val();
var pswdVar=$('input[id=Pswd]')。val();
var pswdconfirm=$('input[id=Pswd2]')。val();
var querystring=“Email=“+emailVar+”&Pswd=“+pswdVar;
$.post(“process/AddUser.php”,querystring);
});//结束提交()
};//如果验证程序
}); //结束就绪()
验证器文件(ValidateEmail.php)
经过一些研究后,我回到代码中,发现它在js和php验证中都充满了错误:
<script>
$(document).ready(function()
{
var validator = $("#AddUser").validate({
rules: {
Email: {
required: true,
email: true,
remote: "process/ValidateEmail.php"
},
Pswd: {
required: true,
},
Pswd2: {
required: true,
equalTo: "#Pswd"
},
},
messages: {
Pswd: {
required: "Provide a password",
},
Pswd2: {
required: "Repeat your password",
equalTo: "Password Mismatch"
},
Email: {
required: "Invalid Email",
remote: jQuery.format("{0} is already used")
}
},
// the errorPlacement has to take the table layout into account
errorPlacement: function(error, element) {
error.appendTo(element.parent().next());
},
// specifying a submitHandler prevents the default submit, good for the demo
submitHandler: function() {
//make Variables
var emailVar =$('input[id=Email]').val();
var pswdVar = $('input[id=Pswd]').val();
var pswdconfirm = $('input[id=Pswd2]').val();
var querystring = "Email="+emailVar+"&Pswd="+pswdVar;
$.post("process/AddUser.php",querystring);
$('#AddUser').clearForm();
return false;
},
// set this class to error-labels to indicate valid fields
success:
function(label) {
label.html(" ").addClass("checked");
}
});
});
</script>
$(文档).ready(函数()
{
var验证程序=$(“#AddUser”).validate({
规则:{
电邮:{
要求:正确,
电子邮件:是的,
远程:“process/ValidateEmail.php”
},
Pswd:{
要求:正确,
},
Pswd2:{
要求:正确,
equalTo:“Pswd”
},
},
信息:{
Pswd:{
必需:“提供密码”,
},
Pswd2:{
必需:“重复您的密码”,
equalTo:“密码不匹配”
},
电邮:{
必需:“无效电子邮件”,
远程:jQuery.format(“{0}已被使用”)
}
},
//errorPlacement必须考虑表格布局
errorPlacement:函数(错误,元素){
error.appendTo(element.parent().next());
},
//指定submitHandler会阻止默认提交,这对演示很有好处
submitHandler:函数(){
//制造变量
var emailVar=$('input[id=Email]')。val();
var pswdVar=$('input[id=Pswd]')。val();
var pswdconfirm=$('input[id=Pswd2]')。val();
var querystring=“Email=“+emailVar+”&Pswd=“+pswdVar;
$.post(“process/AddUser.php”,querystring);
$('#AddUser').clearForm();
返回false;
},
//将此类设置为错误标签以指示有效字段
成功:
功能(标签){
label.html(“”.addClass(“选中”);
}
});
});
php必须如下所示:
$email= $_POST['email'];
include 'connect.php';
$email = trim(mysql_real_escape_string($email));
$query = mysql_query("SELECT COUNT(id) FROM users WHERE email = '$email'") or die(mysql_error());
echo (mysql_result($query, 0) == 1) ? 'false' : 'true';
注意不要只回显false或true必须像这样回显'false'或true解决了它:我回到公式,在验证中发现了一些错误。php还有if(验证)不正确
email: {
required: true,
email: true,
remote: {
url: "check-email.php",
type: "post",
data: {
email: function() {
return $("[name='email']").val();
}
}
}
},
$email= $_POST['email'];
include 'connect.php';
$email = trim(mysql_real_escape_string($email));
$query = mysql_query("SELECT COUNT(id) FROM users WHERE email = '$email'") or die(mysql_error());
echo (mysql_result($query, 0) == 1) ? 'false' : 'true';