我执行 SQL 查询并接收用fetch_assoc
. 最后在php
我通过 ajax 和json_encode
.
echo json_encode($this->rows);
这将是 JS 中的代码:
function search(){ //recojo los datos y llamo a askDatabase
var id_vehicle = document.buscar.id_vehicle.value;
var brand = document.buscar.brand.value;
askDatabase(id_vehicle, brand);
}
function askDatabase(id_vehicle, brand){ //Comunicación con PHP
__ajax("controller.php?p=list/", "id_vehicle="+id_vehicle+"&brand="+brand)
.done( function( info ){
console.log("DATA: " + info);
info = JSON.parse(info); //AQUI EL ERROR
renderData(info);
});
}
function __ajax(url, data){ //Ajax configured
var ajax = $.ajax({
"method": "POST",
"url": url,
"data": data
})
return ajax;
}
我得到以下内容string (var info)
,但我想要一个对象:
[{"id_vehicle":"1","class":"business","brand":"Citroen","model":"C5 2.0hdi","year":"2010","km":"129000"}]
尝试解析时,会产生以下错误,由 chrome 控制台报告:
Uncaught SyntaxError: Unexpected token in JSON at position 0
at JSON.parse (<anonymous>)
at Object.<anonymous> (controller.php:127)
at fire (jquery-3.1.1.js:3305)
at Object.fireWith [as resolveWith] (jquery-3.1.1.js:3435)
at done (jquery-3.1.1.js:9242)
at XMLHttpRequest.<anonymous> (jquery-3.1.1.js:9484)
如何通过 ajax 从 PHP 返回 JSON 对象?
我已经解决了,这与 JSON 解析等无关。
问题只是文档以 UTF-8 编码和 BOM 保存。
BOM 是已插入响应中的字符,因此无法应用 JSON.parse();
解决方案是在没有 BOM 的情况下保存为 UTF-8。
根据您的返回码
echo json_encode($this->rows);
,我告诉您以下内容。您必须遍历行(这似乎是您的数据库语句的直接结果),以便为每一行构建一个有效的 JSON 元素。咳咳,这只是您分析和应用于您的案例的示例。在 PHP 中
在您收到的 JavaScript 中
如果客户端您需要任何转换,例如
当然,前面的点被赋值给一个变量,在 PHP 中形成的内容将使用
recibido.datos
.也许是解析器,试试这个:
代替: