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

时间:2014-12-06 11:29:10

标签: javascript php 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");
}
    });

(我知道'click'功能没有关闭,但那是因为它后面有一些东西。)

因此,它将#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;
}

请注意,这不是我通常使用的方法。这更像是一个'testbench'。

唯一的是;它总是返回一个空的警告框,然后显示“名称不存在”。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

在您的情况下,PHP中的return语句只是停止执行。您需要将数据发送到实际响应,例如使用echo

if ($query->num_rows > 0) 
{
    echo "true";
}
else
{
    echo "false";
}

第一个javascript alert为空,因为没有从PHP返回数据,其评估为false

答案 1 :(得分:0)

将PHP更改为

if ($query->num_rows > 0) 
{
    echo "true";
}
else
{
    echo "false";
}

然后JS阅读

if(data == "true"){

答案 2 :(得分:-3)

我认为您使用$ .POST错误。 “数据”在您的代码中永远不会有任何价值。它是,并且将是未定义的。

查看文档中的代码:http://api.jquery.com/jquery.post/

这是一个应该工作的剪辑:

$.post( "ajax/test.html", function( data ) {
  alert(data);
  // Go ahead with your code.
});

所以使用一个带有(数据)的匿名函数并从那里开始。