0

这是我的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);

我已经使用了萤火虫,并且我成功地从响应中获得了 json 值,但是为什么我得到对象对象输出?怎么了?我错过了什么吗?

4

2 回答 2

3

从我在您的print_r($items_from_amazon);输出中看到的,您有 Array-Object-Object,请尝试使用以下代码:

for(var i=0;i<data.length;i++){
 toAppend += '<li>'+data[i]["asin"][0]+'</li>';
}
于 2012-09-26T05:56:07.537 回答
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]在客户端代码中使用。

于 2012-09-26T05:57:05.920 回答