我正忙于注册表单,但最大的部分是jQuery。所以我也想使用 jQuery 验证输入。经过深思熟虑,这就是我想出的;
$('#usernameDone').click(function()
{
$.post('public/robin/check_existing.php',{value: $("#username").val()}, function(data){
window.alert(data);
if(data == true){
window.alert("Name exists");
}else{
window.alert("Name doesnt exist");
}
});
(我知道"点击"功能没有关闭,但那是因为它后面有一些东西。
所以它将#username
输入字段的值发布到 check_existing.php
中,如下所示;
<?php
$value = $_POST['value'];
$db = new MySQLi('127.0.0.1', 'root', '*******', 'htv1.1');
$query = $db->prepare('SELECT * FROM ht_users WHERE naam = ?');
$query->bind_param('s', $value);
$query->execute();
if ($query->num_rows > 0)
{
return true;
}
else
{
return false;
}
请注意,这不是我通常使用的方法。这更像是一个"测试台"。
唯一的问题是;它总是返回一个空的警报框,然后它显示"名称不存在"。
如何解决这个问题?
在您的情况下,PHP 中的 return
语句只是停止执行。 您需要将数据发送到实际响应,例如使用 echo
:
if ($query->num_rows > 0)
{
echo "true";
}
else
{
echo "false";
}
第一个 javascript alert
为空,因为没有从 PHP 返回任何数据,其计算结果为 false
。
将 PHP 更改为读取
if ($query->num_rows > 0)
{
echo "true";
}
else
{
echo "false";
}
然后 JS 读取
if(data == "true"){
我认为
您使用的是 $。开机自检错误。"数据"在你的代码中永远没有任何价值。它是并且将是不确定的。
查看文档中的代码:http://api.jquery.com/jquery.post/
这是一个应该可以工作的截图:
$.post( "ajax/test.html", function( data ) {
alert(data);
// Go ahead with your code.
});
因此,请使用一个匿名函数来获取(数据)并从那里继续。