在ajax
调用之后,我的php
脚本echo
输出一个json_encode
d多维数组。当我在javascript中循环数组时,它会迭代每个单独的字符,而不是顶级数组元素。为什么?
js
$('.test').on('click',function(){
$.ajax({
url: 'http://domain.com/my/script,
}).done(function(multidimensionalArray) {
console.log(multidimensionalArray); //outputs the seemingly correct array
console.log(multidimensionalArray.length); //outputs number of characters (instead of the expected 20...)
})
});
php
public function calledByAjax() {
$items = namespace'items'GetList::getAll(array(
'limit' => 20 // This appropriately limits the results to 20, which is why 20 is expected above in the js
));
$items_array = array();
foreach($items as $key=>$item){
$temp = array (
'attr1' => $item->getPrivateVar1(),
'attr2' => $item->getPrivateVar2(),
'attr3' => $item->getPrivateVar3(),
);
$items_array[$key] = $temp;
}
echo json_encode($items_array);
exit(0);
}
console.log(多维数组)
[{"attr1":"The variable","attr2":"the variable","attr3":"the variable"},...
...so on for 20 items...
]
console.log(多维数组长度)
1562
您使用的不是对象,而是字符串。
您需要确保php脚本返回的输出(字符串)被解析为json。最简单的方法是指定dataType
:
$('.test').on('click',function(){
$.ajax({
url: 'http://domain.com/my/script',
dataType: 'json' // the expected data type is json,
// jQuery will parse it automatically
}).done(function(multidimensionalArray) {
console.log(multidimensionalArray); //outputs the seemingly correct array
console.log(multidimensionalArray.length); //outputs number of characters (instead of the expected 20...)
})
});