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);

私はすでに firebug を使用しており、応答から 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 に答える