Ajax / PHP:调用正常,但未从 PHP 发出警报结果
Posted
技术标签:
【中文标题】Ajax / PHP:调用正常,但未从 PHP 发出警报结果【英文标题】:Ajax / PHP: Call working correctly but not alerting result from PHP 【发布时间】:2015-09-07 06:40:16 【问题描述】:我使用下面的方法通过 Ajax(在 jQuery 中)将数据传递到 php 页面。 然后 PHP 页面将它们插入 mysql 数据库(如果它们不存在)。
一切正常,但我无法取回我在 PHP 中回显的结果。
我认为在成功函数中可以使用一个简单的警报,但 我没有收到任何警报 - 无论是插入成功还是我故意提交已经存在的内容时。
有人可以帮我解决这个问题吗?
阿贾克斯:
$.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();
提前非常感谢, 迈克
【问题讨论】:
如果您使用的是chrome开发者工具或firebug,请查看网络日志,查看请求是否正确返回。在您的“响应”选项卡中,您应该能够看到这条回显消息。 谢谢,我正在使用 Chrome。会试试这个。 您是否尝试在当前域之外进行跨域 AJAX 调用? 嗯,通过删除 baseURL 并且只在 AJAX 调用中使用相对 URL,有什么区别吗?我可能误解了来自 IE 的错误消息。要在 chrome 中打开网络日志,只需右键单击页面上的任意位置并选择“检查元素”选项。在那里,您必须单击“网络”选项卡。现在发出 AJAX 请求,它会显示在这里。单击它可以获取状态、标题、响应等。 让我们continue this discussion in chat. 【参考方案1】:将其作为 JSON 返回,使用 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);
【讨论】:
非常感谢 - 让我试试这个。我需要在 Ajax 调用中为此设置数据类型吗? 我尝试了两次,但它也没有给我任何警报(假设我不必在 Ajax 中为此设置数据类型)。 学习使用 Firebug 或 Chrome 开发者工具。像这样的调试有点毫无意义。您必须弄清楚服务器返回什么(无论消息是什么)。 谢谢 - 我刚刚更新了上述 cmets 下的结果。 我们已经解决了这个问题(参见上面的 cmets),但您对 json 响应的建议仍然非常有帮助。再次感谢!【参考方案2】:我根据 Ixer 的建议为响应添加了 json 编码解决方案,这使它更易于处理,我喜欢这种方法。
然而,实际问题出在我设置的 baseURL 中。
我的 URL 以 http:www.url...
开头,而开发人员工具中的错误提到了以 http:url...
开头的 URL,所以由于某种原因,它似乎认为导航到 ajax 页面是转到不同的 URL。
将我的标头中的基本 URL 更改为 http:url... 解决了问题 - 感谢 Timphs 抽出时间帮助我进行测试。
【讨论】:
以上是关于Ajax / PHP:调用正常,但未从 PHP 发出警报结果的主要内容,如果未能解决你的问题,请参考以下文章