我有一个HTML表单,并且具有两个字段:password和passwordconf,我想使用ajax来检查密码是否匹配而不刷新页面。这是我到目前为止尝试过的:
这是我的注册文件中的脚本:
<script>
$('#password,#passwordconf').focusout(function (){
var password=$(this).val();
var passwordconf=$(this).val();
$.ajax({
url:"verifpass.php",
method:"POST",
data:{password:password,
passwordconf:passwordconf},
succes:function(result){
$(".result").html(result);
}});
});
上面的脚本在另一个文件中链接到该php:
<?php include('config.php');
$password=$_REQUEST['password'];
$passwordconf=$_REQUEST['passwordonf'];
if(($passowrd!=null) && ($passwordconf!=null))
{
if($password!=$passwrdconf)
{
$msg1="<span style='color:red'>nu</span>";
}
else { $msg1="<span style='color:green'>da</span>"; }
}
echo $msg1;
?>
控制台显示,当我更新字段时发给这两个密码的帖子已发送,但未显示任何消息,我无法弄清楚原因。
从客户端检查值比在服务器上检查要容易得多。而且,由于它还不敏感,也没有在JavaScript中进行硬编码,因此不会有问题。
只需确保选择正确的字段。 $(this)
是触发事件的当前字段。因此,在您的情况下,第一个或第二个密码字段。要从两个字段中获取字段,只需预选它们即可。
然后比较这些值并在客户端执行操作。这将减少客户端和服务器之间的通信麻烦,并使警告或检查更快地进行评估和显示。
但是,如果您要从数据库中检查电子邮件地址,则该方法将有意义,因为数据存储在其中。
success
回调缺少s
,因此在$.ajax
完成后将永远不会调用该函数。始终仔细检查您的拼写。
var $password = $("#password");
var $passwordConf = $("#passwordconf");
var $result = $(".result");
$('#password, #passwordconf').focusout(function (){
var password = $password.val();
var passwordconf = $passwordConf.val();
if (password !== passwordconf) {
$result.html("<span style='color:red'>nu</span>");
} else {
$result.html("<span style='color:green'>da</span>");
// You won't need to do the check anymore, but maybe you want to store
// the data filled in by the user? So I'll leave it here.
$.ajax({
url:"verifpass.php",
method:"POST",
data:{
password: password,
passwordconf: passwordconf
},
success: function(result){
$result.html(result);
}
});
}
});