Ajax如何与PHP一起使用?

时间:2011-05-08 20:41:51

标签: php ajax forms validation submission

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

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

您需要在Ajax请求中添加success选项,这是在XHR成功时执行的JS函数。有关详细信息,请查看jQuery documentation

如果不运行脚本,我认为您会发现$_POST['input']为空;你需要像data: {'input': input}那样传递你的数据。

您的PHP还需要将一些内容返回给脚本;考虑将您对check()的通话更改为以下内容:

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

您现在可以在JavaScript中查看内容。

答案 1 :(得分:1)

基本上,ajax是您服务器的一个令人震惊的例程。

的Ajax:

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

pagewithfunction:

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}是post数据,而function(response)是你处理从服务器回显的数据的地方 - - 变量,响应,是回声的内容。