我正忙于注册表,但最重要的是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'。
唯一的是;它总是返回一个空的警告框,然后显示“名称不存在”。
我该如何解决这个问题?
答案 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.
});
所以使用一个带有(数据)的匿名函数并从那里开始。