这是我的jquery:
$.ajax({
url: 'function.php',
type: 'post',
datatype: 'json',
success: function(data){
var toAppend = '';
if(typeof data === "object"){
for(var i=0;i<data.length;i++){
toAppend += '<li>'+data[i]["asin"]+'</li>';
}
$('.results').append(toAppend);
}
}
});
这是我的php:
echo json_encode($items_from_amazon);
我已经使用了firebug并且我从响应中成功获得了json值,但是为什么我得到对象对象输出?有什么问题?我错过了什么?
答案 0 :(得分:3)
根据我在print_r($items_from_amazon);
输出中看到的,您有Array-Object-Object,请尝试使用以下代码:
for(var i=0;i<data.length;i++){
toAppend += '<li>'+data[i]["asin"][0]+'</li>';
}
答案 1 :(得分:0)
echo json_encode(array_values($items_from_amazon));
这应该确保您的JSON将是一个数组。但是,它会丢弃任何字符串键。
如果$items_from_amazon
是对象,则可以将其强制转换为数组:
echo json_encode(array_values((array)$items_from_amazon));
修改强> 如果我误解了这个问题,你想知道为什么你的ASIN元素有对象:
您可能希望更改生成$items_from_amazon
的代码,使其不附加,但分配ASIN。
// This appends
$item['asin'][] = $asin;
// This assigns
$item['asin'] = $asin;
// Note: make sure $asin is a string, not an object or array...
您也可以在客户端代码中使用data[i]["asin"][0]
。