我编写了一个php脚本,该脚本进行SQL查询并从数据库中获取唯一名称列表。
我正在使用jQuery向php脚本发出AJAX GET
请求。当我检查控制台中的资源时,我看到正在调用php脚本,当我检查响应时,它包含一个唯一名称列表。
但是,jquery GET
请求失败,并在控制台中显示错误消息。
查看我的代码可能更容易也更清晰,因为我不知道这里有什么问题。请参阅下面的代码。
PHP
<?php
header('Content-Type: application/json');
$servername = "****";
$username = "****";
$password = "****";
$dbname = "****";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT DISTINCT(name) FROM customer";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo json_encode(array('customer' => $row["name"]));
}
} else {
echo "0 results";
}
$conn->close();
?>
JS
$.ajax({
type: 'GET',
url: 'getcustomers.php',
success: function(data){
console.log(data);
},
error: function() {
console.log('error');
}
});
在控制台中,它只是说error
,这意味着它已执行error
功能。
当我在浏览器中加载php文件时,它会显示以下内容。
{"name":"Peter"}{"name":"Alan"}{"name":"Mike"}
答案 0 :(得分:3)
您的JSON响应不是有效的。您正在每次迭代时打印每个数据行。所以用这个替换while语句
<artifactId>
答案 1 :(得分:0)
考虑到你的脚本会返回任何结果(我希望你试过在broswer中运行它)然后你可以使用这样的东西:
$.get('path/to/file/filename.php').done(function(response) {
$('#exampleDiv').html(response);
});
虽然是常见错误,因为如果您请求的php文件在当前工作目录之外,则必须指定目录路径。
答案 2 :(得分:0)
将错误处理函数标题更改为以下内容:
error: function (jqXHR, textStatus, errorThrown) {
然后打印出来并查看错误是什么
答案 3 :(得分:0)
你在side while循环中回显json_encode字符串,而不是你必须在数组中推送行,最后你只能回显一次json字符串。
$outputArr = array();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
array_push(outputArr ,array('customer' => $row["name"]));
}
} else {
echo "0 results";
}
echo json_encode($outputArr);