Ajax / PHP:调用正常但不警告PHP的结果

时间:2015-06-21 21:06:54

标签: php mysql ajax post

我使用下面的代码通过Ajax(在jQuery中)将数据传递到PHP页面。 然后PHP页面将它们插入MySQL数据库(如果它们不存在)。

一切正常但我无法取回我在PHP中回应的结果。

我认为在成功函数中会有一个简单的警报,但是我没有收到任何警报 - 既不是插入成功也不是我故意提交已经存在的东西。

有人可以帮帮我吗?

Ajax:

$.ajax({        
    type: "post",   
    url: baseURL + "/ajax.php", // baseURL is the main URL, i.e. http://www.myurl.com
    cache: "false",
    data: {
        email: email,
        dob: dob
    },
    success: function(data){
        alert(data);
    },
    error: function(){
    }
});

PHP:

$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
if($conn->connect_error){
    die("Connection failed: " . $conn->connect_error);
}
$email = $_POST["email"];
$dob = $_POST["dob"]; 
$sql = "SELECT email FROM Users WHERE email = '" . $email . "'";
$query = $conn->query($sql);
if(mysqli_num_rows($query) > 0){
    echo "record already exists";
}else{
    $sql = "INSERT INTO Users (email, dob) VALUES ('" . $email . "', '" . $dob . "')";
    if ($conn->query($sql)) {
        echo 'update successful';
    }else{
        echo 'update failed';
    };
}
$conn->close();

非常感谢, 麦克

2 个答案:

答案 0 :(得分:2)

使用json_encode

将其作为JSON返回
   <?php
    //....
    if(mysqli_num_rows($query) > 0){
        $str =  "record already exists";
    }else{
        $sql = "INSERT INTO Users (email, dob) VALUES ('" . $email . "', '" . $dob . "')";
        if ($conn->query($sql)) {
            $str = 'update successful';
        }else{
            $str = 'update failed';
        };
    }
$data = array('response' => $str);

header('Content-Type: application/json');
echo json_encode($data);

答案 1 :(得分:0)

我根据Ixer的建议为响应添加了json编码解决方案,这使得它更容易处理,我更喜欢这种方法。

然而,实际问题却出现在我设置的baseURL中。 我的网址以h http:url...开头,而开发人员工具中的错误提到了以{{1}}开头的网址,因此出于某种原因,它似乎认为导航到ajax页面时会转到其他网址。

将标题中的基本网址更改为http:url ...解决了问题 - 感谢Timphs花时间帮我测试一下。