我有一个向PHP发出AJAX POST请求的页面,PHP正在查询MySQL,并返回一个计算查询响应的JSON对象。这一切都在起作用,但它停止了,我无法弄清楚出了什么问题。
这是发出请求的JS,getDriver.js
<?php
$conn = new mysqli('localhost', 'root', '');
$result = mysqli_query($conn, "USE test") or die(mysql_error());
$result = mysqli_query($conn, "SELECT id, fname, lname FROM drivers WHERE
isActive = 1");
$rows = array();
while($r = mysqli_fetch_assoc($result)){
$rows[] = $r;
}
$return = json_encode($rows);
echo $return;
?>;
这里是PHP,GetDriverList.php
Error:
VM6389:1 Uncaught SyntaxError: Unexpected token ; in JSON at position 183
at JSON.parse (<anonymous>)
at Object.success (getDrivers.js:9)
at u (jquery-3.3.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.3.1.min.js:2)
at k (jquery-3.3.1.min.js:2)
at XMLHttpRequest.<anonymous> (jquery-3.3.1.min.js:2)
success @ getDrivers.js:9
u @ jquery-3.3.1.min.js:2
fireWith @ jquery-3.3.1.min.js:2
k @ jquery-3.3.1.min.js:2
(anonymous) @ jquery-3.3.1.min.js:2
XMLHttpRequest.send (async)
send @ jquery-3.3.1.min.js:2
ajax @ jquery-3.3.1.min.js:2
(anonymous) @ getDrivers.js:5
错误消息如下:
[{"id":"2","fname":"XXXX","lname":"XXXX"},
{"id":"3","fname":"XXXX","lname":"XXXX"},
{"id":"4","fname":"XXXX","lname":"XXXX"},
{"id":"5","fname":"XXXX","lname":"XXXX"}];
我在getDrivers.js中删除了一些注释,第9行对应于&#34; console.log(响应)&#34;。但是,此行无法登录到控制台。
最后,我从Chrome控制台的网络标签中提取的JSON对象如下:
editable = false
请帮忙!我的JSON对象突然出现了什么问题?
答案 0 :(得分:4)
问题是?>;
,删除;
,因为它也属于发送给客户端的输出。
当我使用php时,最好省略最后一个?>
,只有在确实需要显示数据的情况下才添加它。这降低了意外添加不需要的输出的可能性。
答案 1 :(得分:0)
如果我没弄错,你没有在ajax调用中添加dataType。
dataType 通知响应中需要哪种类型的数据,在您的情况下为json。
var driverList = [];
$.ajax({
url: './php/GetDriverList.php',
type: 'post',
dataType : 'json',
success: function(response){
console.log(response);
var tempList = JSON.parse(response);
for(var i = 0; i < tempList.length; i++){
driverList.push(tempList[i]);
}
buildTable(driverList);
}
});