使用 jQuery 检查数据库行是否存在


Checking if database row exists using jQuery

我正忙于注册表单,但最大的部分是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.
});

因此,请使用一个匿名函数来获取(数据)并从那里继续。