[英]Remote validation in jquery validation not returning
我尝试使它起作用,但未成功,我尝试了18种不同的方式来产生相同的结果。 我已仔细检查并三重检查了一切。 什么都没做! 如果jquery不起作用,我已经在服务器端进行了验证,作为后备。 验证部分工作正常,如果存在不正常的问题,则可以正常工作。
我的表格栏位
<div class="col-sm-12">
<label>Name</label>
<input type="text" class="form-control" autocomplete="off" name="name" id="name" value="<?php echo isset($_POST['name']) ? $_POST['name'] : '' ?>">
</div>
我的jQuery验证功能
$(function() {
$("form[name='register']").validate({
rules: {
name: {
required: true,
name: true,
remote: {
url: "../includes/check.php",
type: "post",
data: {
name: function() {
return $( "#name" ).val();
}
}
}
},
email: {
required: true,
email: true
},
password: {
required: true,
minlength: 5
}
},
messages: {
name: {
required: "Please enter your name",
minlength: "Name must be at least 4 characters long",
remote: "The name entered is unavailable"
},
password: {
required: "Please provide a password",
minlength: "Your password must be at least 5 characters long"
},
email: "Please enter a valid email address"
},
submitHandler: function(form) {
form.submit();
}
});
});
我的查询脚本
include("db.php");
if(isset($_POST['name'])) {
$name = $_POST['name'];
$db = dbconnect();
$stmt = $db->prepare("SELECT Name FROM users WHERE Name = ?");
$stmt->bind_param('s', $name);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows == 1){
echo 'true';
}else{
echo 'false';
}
}
该问题与远程验证没有直接关系。
您只需要删除
name: true,
从您的验证选项中。 此选项在jQuery Validate中不存在-没有名为“ name”的验证方法-并在jQuery validate尝试使用它时导致Javascript错误:
无法读取未定义的属性“ call”。 检查元素名称时发生异常,请检查“名称”方法。
这意味着“远程”验证永远不会执行,因为脚本在到达它之前会崩溃。
请参阅https://jsfiddle.net/09djba33/10/以查看损坏的功能-打开开发人员工具并提交表单(名称字段已填写),并观察错误消息出现在控制台中。
和https://jsfiddle.net/09djba33/12/来查看“远程”方法在没有该虚假选项的情况下能否正常工作。
PS这就是为什么在评论中,我一直要求您通过浏览器工具来查看ajax请求发生了什么... :-)
通过阅读文档https://jqueryvalidation.org/remote-method/,您可以看到在使用远程方式时,由于使用的是post方法,因此需要将数据发送到服务器端脚本。 这样做:
remote: {
url: "../includes/check.php",
type: "post"
data: {
username: function () {
return $('#username').val();
}
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.