2

我在使用 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 相应地起作用?主要是,为什么这不起作用?

很感谢任何形式的帮助。谢谢!

4

2 回答 2

1

您需要将success选项添加到您的 Ajax 请求,这是 XHR 成功时执行的 JS 函数。查看jQuery 文档以获取更多信息。

如果不运行脚本,我想你会发现它$_POST['input']是空的;你需要像这样data: {'input': input}做一样传递你的数据。

你的 PHP 还需要向脚本返回一些内容;考虑将您的呼叫更改check()为以下内容:

echo (check($_POST) ? 'true' : 'false');

您现在可以检查 JavaScript 中的内容。

于 2011-05-08T20:45:45.867 回答
1

基本上,ajax 是与您的服务器握手的例程。

阿贾克斯:

$.post('yoursite.com/pagewithfunction.php',
    {postkey1:postvalue1, postkey2:postvalue2...},
    function (response) {
       // response is the data echo'd by your server
    }, 'json'
);

页面功能:

yourFunction(){
   $var1 = $_POST['postkey1'];....
   $result = dosomething($var1..);
   echo json_encode($result); // this is passed into your function(response) of ajax call
}

因此,在 $.post 中,您拥有带有函数的 php 页面的 url,{ var:val } 是发布数据,而 function(response) 是您处理从服务器回显的数据的地方——变量,响应,是回显的内容。

于 2011-05-08T22:43:09.167 回答