我正在尝试使用jqueryValidation引擎插件验证注册表单,有些验证无法正常工作
I am trying to validate a signup form by using jqueryValidation engine plugin some validations are not working correctly
首先,我必须告诉大家,我是php的新手。我正在尝试使用jqueryValidation引擎插件来验证注册表单。我成功地验证了一些部分,现在我被困在用户名验证部分(检查用户输入的名称是否已在数据库中,如果已在,则显示"用户名已被占用")。当我输入用户名时,会显示"正在验证请等待"提示,我无法提交表单。我使用了bootstrap 3.3.6。
这是我的注册表格
<div class="modal fade" id="signupForm" data-backdrop="false" role="dialog">
<div class="modal-dialog">
<div class="modal-content Popmodal">
<div class="modal-header">
<button type="button" class="close Popclose" data-dismiss="modal" aria-label="">
<span>×</span>
</button>
<h4 class="modal-title Poptit">Sign Up</h4>
</div>
<div class="modal-body Popbody">
<div id="error">
<!-- error will be showen here ! -->
</div>
<form class="form-horizontal" method="post" action="registration.php" id="reg-form">
<div class="form-group"><br>
<label class="col-md-4 col-md-offset-1">User Name :</label>
<div class="col-md-5">
<input type="text" placeholder="A name that you like to use" value = "" class="form-control input-sm popname validate[required,custom[onlyLetterNumber],maxSize[20],ajax[ajaxUserCallPhp]]" name="uname" id="uname" data-errormessage-value-missing="Username is required !" data-prompt-position="bottomLeft:5,4"><br>
</div>
</div>
<div class="form-group">
<label class="col-md-4 col-md-offset-1">Email :</label>
<div class="col-md-5">
<input type="email" placeholder="Your email address" class="form-control input-sm popname validate[required,custom[email]]" name="mail" id="mail" data-errormessage-value-missing="Email is required !" data-errormessage-custom-error="Invalid email address !" data-prompt-position="bottomLeft:5,4"><br>
</div>
</div>
<div class="form-group">
<label class="col-md-4 col-md-offset-1">Password :</label>
<div class="col-md-5">
<input type="password" maxlength="15" placeholder="Password" class="form-control input-sm popname validate[required]" name="pass" id="pass" data-errormessage-value-missing="Password is required !" data-prompt-position="bottomLeft:5,4"><br>
</div>
</div>
<div class="form-group">
<label class="col-md-4 col-md-offset-1">Confirm Password :</label>
<div class="col-md-5">
<input type="password" maxlength="15" placeholder="Confirm password" class="form-control input-sm popname validate[required,equals[pass]]" name="cpass" id="cpass" data-errormessage-value-missing="Confirm password is required !" data-errormessage-pattern-mismatch="Password fields do not match !" data-prompt-position="bottomLeft:5,4"><br>
</div>
</div>
<div class="form-group">
<div class="col-md-2 col-md-offset-8">
<button type="submit" class="btn btn-success sign" value="submit" name="signup">Sign Up</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
这是js部分
<script>
$(document).ready(function(){
$("#reg-form").validationEngine();
});
</script> //this part is on the index page with signup form
"ajaxUserCallPhp": {
"url": "ajaxValidateFieldUser.php",
"extraDataDynamic": ['#uname'],
"alertTextOk": "* This username is available",
"alertText": "* This user is already taken",
"alertTextLoad": "* Validating, please wait"
}
这是php代码
<?php
$validateValue=$_REQUEST['fieldValue'];
$validateId=$_REQUEST['uname'];
$validateError= "This username is already taken";
$validateSuccess= "This username is available";
$arrayToJs = array();
$arrayToJs[0] = $validateId;
require_once('dbconfig.php');
$stmt = $db_con->query('SELECT uname FROM users WHERE uname ='$validateValue'');
$stmt->bindValue(':uname', $uname, PDO::PARAM_STR);
$stmt->execute();
$res = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($res->fetchColumn() > 0) {
$arrayToJs[1] = false;
echo json_encode($arrayToJs); // RETURN ARRAY WITH ERROR
} else{
$arrayToJs[1] = true;
echo json_encode($arrayToJs); // RETURN ARRAY WITH success
}
?>
让我们从这里开始:
$stmt = $db_con->query('SELECT uname FROM users WHERE uname = '$validateValue'');
$stmt->bindValue(':uname', $uname, PDO::PARAM_STR);
$stmt->execute();
$res = $stmt->fetchAll(PDO::FETCH_ASSOC);
您的引号已完全损坏,因此文件甚至无法解析。即使解决了这个问题,仍然存在许多问题。
以下是一些关于如何进行基本查询的文档。简而言之,先准备后执行。对于简单的SELECT
查询,绑定通常是不必要的,并且调用PDO::query()
对准备好的语句根本不起任何作用。试试这个:
$stmt = $db_con->prepare('SELECT uname FROM users WHERE uname = :uname');
$stmt->execute(["uname"=>$validateValue]);
然后PDOStatement::fetchAll()
返回一个数组,但您正试图对其调用PDOStatement::fetchColumn()
。选择其中一个。
还有更多的问题,但您应该逐行查看代码,并了解每一行的作用。你不能指望从六个网站上复制和粘贴东西并让它发挥作用。
相关文章:
- 在键上验证正在工作,但在按键时它不起作用
- struts2 jquery ajax 和客户端验证不工作
- 在本地机器上,我的简单js验证可以工作,但在jsfiddle上却不行;t为什么
- 基本验证javascript工作不正常
- Ajax表单-仍然无法使其与验证一起工作
- JavaScript 警报拒绝在表单验证中工作
- 电话号码和电子邮件验证不工作在javascript与asp .net
- 简单的Javascript验证-不工作
- 特定域的电子邮件验证不工作
- 输入验证只工作一次
- 表单验证不工作(没有控制台错误),并且通过多个函数传递参数
- Javascript验证不工作
- 使用jquery输入文件类型错误验证不工作
- 我的JavaScript表单验证不工作
- Jquery Validate -无法让验证器工作
- 引导表单验证不工作
- JQuery验证不工作
- 表单验证不工作在chrome和firefox
- HTML5验证不工作在OnChange选择框表单提交
- 添加密码验证后表单验证不工作