我总是在我的代码中的位置 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/