为什么我从我的ajax到php得到对象对象的结果?

时间:2012-09-26 05:37:16

标签: php json jquery

这是我的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值,但是为什么我得到对象对象输出?有什么问题?我错过了什么?

2 个答案:

答案 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]