用ajax调用php代码会导致错误

时间:2016-04-09 03:01:24

标签: php jquery ajax

我试图使用ajax调用一些php代码:

$(document).ready(function() {
    $("#email_address").on("keypress", function() {
        request = $.ajax({
            url: '../verify_email.php',
            data: {email: $("#email_address").val(),
                   submitted: true},
            type: 'post'
        });

        request.done(function(response) {
            //fooling around to see if this works
            if(response) {
                alert("valid email");
            } else {
                alert("invalid email");
            }
        });

        request.error(function(response) {
            alert("an error occurred");
        });
    });
});

但是,request.error函数会运行。我不太清楚为什么。这是php代码:

<?php
    if(isset($_POST['submitted']) and isset($_POST['email'])) {
        if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
            echo 'true';
        } else {
            echo 'false';
        }
    }
?>

提前致谢。

2 个答案:

答案 0 :(得分:1)

哎呀,noob错误。我已将php url设置为相对于.js文件而不是网页。应该是:

    request = $.ajax({
        url: 'verify_email.php'

而不是

    request = $.ajax({
        url: '../verify_email.php',

我通过使用Chrome的网络检查员来解决这个问题。我今天学到了两件新东西:网址必须是什么,以及如何使用Chrome的网络检查器。谢谢大家的帮助

答案 1 :(得分:1)

如果你的网址工作正常,请在php中尝试返回json;)

<?php
    $return = false;

    if(isset($_POST['submitted']) and isset($_POST['email'])) {
        if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
            $return = true;
        } else {
            $return = false;
        }
    }

header('Content-Type: application/json');
echo json_encode(array('result' => $return));
die;

?>

在javascript中尝试:

request.done(function(response) {
            //fooling around to see if this works
            if(response.result) {
                alert("valid email");
            } else {
                alert("invalid email");
            }
        });