Javascript / PHP意外令牌';'在JSON上

时间:2018-02-05 07:17:51

标签: javascript php jquery mysql json

我有一个向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对象突然出现了什么问题?

2 个答案:

答案 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);
    }
});