javascript - 位置 0 处的 JSON 中的意外标记

标签 javascript php json

我总是在我的代码中的位置 0 得到 JSON 中的意外标记

echo json 将是

["pen","pencil","apple","cat","dog"]

并且控制台会得到 Uncaught SyntaxError: Unexpected token p in JSON at position 0

PHP 代码:

    <?php

        include 'Connect_2.php';
        header('Content-Type: application/json;charset=utf-8');
        $Store_int =$_GET['num'];

        #execute sql function and return result
        $sql = "SELECT * FROM `store` WHERE `Place_int` = ".$Store_int;

        mysqli_select_db($link,"web");
        $link -> set_charset("utf8");
        $result = mysqli_query($link,$sql);

        $arr = array();
        while ($row = mysqli_fetch_object($result)){
            $p =(string) $row -> Name;
            $arr[]=$p;
        }
        //print_r($arr);
        $jsonArr = json_encode($arr,JSON_UNESCAPED_UNICODE);

        echo ($jsonArr);
        mysqli_free_result($result);
        mysqli_close($link);
    ?>

.js代码

function getArr(store_int){
var jsArray = new Array();
$.ajax({
    url: "fromSQL_store.php",
    data: {
        num: store_int
    },
    type: "GET",
    dataType: "json",
    success: function(data) {
        jsArray = JSON.parse(data);
        //jsArray = data;
    },error: function(data,XMLHttpRequest, textStatus, errorThrown){
        console.log(textStatus);
        console.log(errorThrown);
    }
});
//alert(jsArray.length);
console.log(jsArray[0]);
return jsArray;

如果我使用 jsArray = data ;console(jsArray[0]) 将显示未定义。

最佳答案

它已经是 JSON 了。不要调用 jsArray = JSON.parse(data);,而是将 data 视为 JSON 对象。

而不是 console(jsArray[0]) 调用 console(jsArray) data 对象似乎不是数组。

此外,看起来您是在发送 ajax 请求后立即调用 console.log,这没有给您任何时间来接收填充对象的响应,所以它将是空的。将console.log放在ajax请求的成功回调中。

JSON.parse() 在解析已经是 JSON 的内容时会抛出此错误,这真的很烦人,因为如果它只是将原始 JSON 返回给您或至少抛出它肯定会很好更精确的错误,例如“错误:这已经是 JSON。”

关于javascript - 位置 0 处的 JSON 中的意外标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44103478/

相关文章:

javascript - 跨 session 保留 ACE 编辑器 UndoManager

javascript - 每次有人插入数据库时​​ PHP MYSQL Javascript 都会播放音频

python - 将 JSON 值添加到列表中

javascript - 如何在 Angularjs $state.go 中发送参数?

javascript - ng-repeat 后的 AngularJS NanoScroller 不显示

javascript - 在父组件中单击创建并返回一个新组件

php - 连续的 Ajax 查询返回旧信息

javascript - 弹出窗口关闭后在原始页面中显示 jQuery ajax 变量

php - 如何将 mysql_fetch_row 解析为 JSON 对象

python - 在python中解码json字符串