我阅读了Parsley Js网站的所有文档。但是我对如何根据AJAX响应设置自定义验证的理解还不够。
我需要验证用户名,如果是,请检查数据库中是否已存在该用户名,并在单击“提交”按钮时显示错误。
我在这里四处张望,并尝试找到与此有关的任何问题,我无法接受,只有我知道应如何放置Ajax代码才能验证该表格。我需要知道PHP文件的外观。那就是为什么我发布这个问题
我正在使用欧芹js新版本。这是我的代码,就像
<form class="forms-sample" id="form">
<div class="form-group">
<label for="exampleInputUsername1">Username</label>
<input type="text" class="form-control" id="exampleInputUsername1"
name="username" placeholder="Username" required data-parsley-username>
</div>
<button type="submit" class="btn btn-success mr-2">Submit</button>
<button class="btn btn-light">Cancel</button>
</form>
我正在使用Bootstrap 4 for CSS。我的Parsley js脚本是这样的
<script>
window.ParsleyValidator
.addValidator('username', function (value, requirement) {
var response = false;
$.ajax({
url: "username.php",
data: {username: value},
dataType: 'json',
type: 'post',
async: false,
success: function(data) {
response = true;
},
error: function() {
response = false;
}
});
return response;
}, 32)
.addMessage('en', 'username', 'The username already exists.');
$("#form").parsley({
errorClass: 'is-invalid',
successClass: 'is-valid',
errorsWrapper: '<span class="invalid-feedback"></span>',
errorTemplate: '<span></span>',
trigger: 'change'
});
</script>
我无法想象我如何创建PHP文件来编写查询以及我想从该PHP中回显什么。
能否请您在此处告诉我需要更改的内容,您能否指导我构建该PHP文件来完成此任务。我需要知道这个JS是否可以工作。谢谢。
我添加了一个php文件。就是这样
<?php
include("include/connection.php");
?>
<?php
if(isset($_POST['username'])){
$username = $_POST['username'];
$query = "SELECT * FROM user WHERE userName = '%$username'";
$q = mysqli_query($conn, $query);
if(mysqli_num_rows($q) > 0) {
echo json_encode("error");
}else {
echo json_encode("success");
}
}
?>
但是,每次出现“用户名已存在”时,我都会收到默认错误消息。有人知道这是什么错误吗?
答案 0 :(得分:0)
在username.php中,您将对传递的用户名运行基本的选择查询,然后根据是否找到结果返回数据。
以下内容应该非常接近。
PHP
if ($user = $mysqli->query("SELECT * FROM `user_table_name` WHERE `username_field_name` = $_POST['username']"))) {
print(json_encode(['status'] => 'user_exists']))
} else {
print(json_encode(['status'] => 'user_available']))
}
AJAX
$.ajax({
url: "username.php",
data: {username: value},
dataType: 'json',
type: 'post',
async: false,
success: function(data) {
if( data.status === 'user_available ) {
//continue your code
} else {
//alert user that the name is unavailable
}
}