-2

我不知道出了什么问题,我只是遗漏了一些东西,我所有的预期数据都基于 firebug 的控制台选项卡成功接收,问题是显示数据。

这是我的jQuery代码:

success: function(data){
            var toAppend = '';
            if(typeof data === "object"){
                for(var i=0;i<data.length;i++){
                    toAppend += '<tr><td colspan="2">'+data[i]['main-asin'][0]+'</td></tr>';
                    toAppend += '<tr><td>'+data[i]['sub-asin'][0]+'</td><td></td></tr>';
                }
                $('.data-results').append(toAppend);
            }
        }

这是我的php代码:

    foreach($xml->Items->Item as $item){
    $items_from_amazon[] = array('main-asin'=>$item->ASIN);
    foreach($xml->Items->Item->Variations->Item as $item){
        $items_from_amazon[] = array('sub-asin'=>$item->ASIN);
    }
}

echo json_encode($items_from_amazon); //return amazon products

这是我的萤火虫的结果: 在此处输入图像描述

4

1 回答 1

2

数组的每个元素都是一个具有单个$items_from_amazon键的关联数组,即or 或。所以数组的第一个元素将具有属性集,但不是;所有其他人将只有,但没有。main-asinsub-asindatamain-asinsub-asinsub-asinmain-asin

解决它的一种方法是像这样更新您的代码:

toAppend += '<tr><td colspan="2">'+data[0]['main-asin'][0]+'</td></tr>';
for(var i = 1; i<data.length; i++){
  toAppend += '<tr><td>'+data[i]['sub-asin'][0]+'</td><td></td></tr>';
}

...但也许最好改变响应和处理代码的结构:

PHP:

foreach($xml->Items->Item as $item){
  $new_item_from_amazon = array(
    'main-asin' => $item->ASIN,
    'sub-asin'  => array(),
  ); 
  foreach($xml->Items->Item->Variations->Item as $item) {
    $new_item_from_amazon['sub_asin'][] = $item->ASIN;
  }
  $items_from_amazon[] = $new_item_from_amazon;
}

JS:

toAppend += '<tr><td colspan="2">'+data['main-asin']+'</td></tr>';
for (var i = 0, l = data['sub-asin'].length; i < l; i++){
  toAppend += '<tr><td>'+data['sub-asin'][i]+'</td><td></td></tr>';
}

我在sub-asin这里分配了一个空数组作为值,以避免data['sub-asin']在 JS 中进行额外检查。

于 2012-10-01T09:29:45.237 回答