我使用下面的代码通过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();
非常感谢, 麦克
答案 0 :(得分:2)
使用json_encode
<?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花时间帮我测试一下。