我有一个jQuery post返回一些对象。
所以,我有一个DB查询结果,我做json_encode($result)
,然后我发送它作为响应在success
函数在jQuery post。
如果我console.log的响应,我看到多个对象。我想要的是将响应作为数组的数组发送。
在PHP中json_encode($results)
javascript:
success: function(json) {
console.log(json);
}
控制台日志:
[>Object , >Object , >Object]
任何想法?
php中的$results
是一个对象数组或关联数组。在使用强制转换发送之前,将其设置为一个数字索引数组:
// ASSUMING each $result object does not have its own nested arrays
foreach ($results as &$result) {
$result = array_values((array) $result);
}
注意,您将失去按列名获取项的能力。
但是请退一步想想你的$result从何而来
如果您正在使用mysql驱动程序,请考虑在构建结果时这样做:
$results = array();
// Note we use MYSQL_NUM option, so $row looks like array('col1value', 'col2value')
while (FALSE !== ($row = mysql_result_array($resource, MYSQL_NUM))) {
$results[] = $row;
}
json_encode($results);
In Javascript with JQuery:
http://api.jquery.com/jQuery.makeArray/jQuery.makeArray ();
php中:
$aArray = (array) $oObject;
json encode将字符串编码为json OBJECT,这在javascript中是一个对象。在javascript中,数组只是一个带有特殊辅助函数的对象。不需要从对象创建数组,因为可以像操作数组一样轻松地操作对象。