我在使用Ajax和php时遇到麻烦。我正在尝试做的是调用ajax函数,该函数从表单的输入中获取值,并检查数据库中是否存在该电子邮件。这是我当前的javascript:
//Checks for Existing Email function checkExisting_email() { $.ajax({ type: 'POST', url: 'checkExist.php', data: input }); emailExists = checkExisting_email(); //If it exists if (emailExists) { alert("This email already exists!"); }
不幸的是,我无法戒备。在我的PHP函数中,它检查输入的是用户名还是电子邮件(仅出于我的目的,所以您知道),然后在任一列中查找它。如果找到它,则返回true,否则返回false:
include ('func_lib.php'); connect(); check($_POST['input']); function check($args) { $checkemail = "/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i"; if (!preg_match($checkemail, $args)) { //logic for username argument $sql = "SELECT * FROM `users` WHERE `username`='" . $args . "'"; $res = mysql_query($sql) or die(mysql_error()); if (mysql_num_rows($res) > 0) { return true; } else { return false; } } else { //logic for email argument $sql = "SELECT * FROM `users` WHERE `email`='" . $args . "'"; $res = mysql_query($sql) or die(mysql_error()); if (mysql_num_rows($res) > 0) { return true; } else { return false; } } }
所以我的问题是,ajax如何响应这些返回值,以及如何相应地使ajax函数起作用?主要是为什么这不起作用?
很感谢任何形式的帮助。谢谢!
您需要将该success选项添加到您的Ajax请求中,该请求是XHR成功时执行的JS函数。请查看jQuery文档以获取更多信息。
success
如果不运行脚本,我想您会发现它$_POST['input']是空的。您需要像data: {'input': input}这样做那样传递数据。
$_POST['input']
data: {'input': input}
您的PHP还需要向脚本返回一些内容。考虑将您的呼叫更改check()为以下内容:
check()
echo (check($_POST) ? 'true' : 'false');
您现在可以在JavaScript中检查内容。