当我尝试解析多个JSON对象时,JSON.parse引发“意外令牌”错误。我以前使用过这种方法,但是仅在数组涉及一行查询结果时才使用。
任何帮助将不胜感激。谢谢
错误
Uncaught SyntaxError: Unexpected token {
JavaScript
if(window.XMLHttpRequest){
var request = new XMLHttpRequest();
} else {
var request = new ActiveXObject(microsoft.XMLHTTP);
}
request.open('POST', 'controllers/engineersOutput.php', true);
request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
request.onreadystatechange = function(){
if((request.readyState==4) && (request.status==200 || request.status==304)) {
var str = request.responseText;
var data = JSON.parse(str);
console.log(data);
}
}
request.send();
的PHP
public function getEngineerDetails(){
include "connect.php";
$query = "SELECT * FROM `engineers`";
$result = mysqli_query($con, $query);
while($row=mysqli_fetch_assoc($result)){
$name = $row['name'];
$pic = $row['pic'];
$insertedEngs = array( "name"=>$name, "pic"=>$pic );
echo json_encode($insertedEngs);
}
}
从服务器创建的JSON字符串很可能由于您创建它的方式而格式错误。
不要在循环内构造JSON字符串,而是先构造并完成数组,然后再编码:
public function getEngineerDetails() {
include "connect.php";
$query = "SELECT * FROM `engineers`";
$result = mysqli_query($con, $query);
// define a container first
$data = array();
while($row = mysqli_fetch_assoc($result)){
// while inside the loop
// construct the array first
$insertedEngs = array("name" => $row['name'], "pic" => $row['pic']);
$data[] = $insertedEngs; // continually push
}
// then encode output when done
echo json_encode($data);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句