1

typeError値がnullになるのはなぜですか?私のfirebugには、nullではなく値があることがわかります。問題は何ですか?

これが私のajaxコードです:

    $.ajax({
    url: 'get-products.php',
    type: 'post',
    datatype: 'json',
    data: { category: $('.category').val().trim(), keyword: $('.keyword').val().trim() },
    success: function(data){
        var toAppend = '';
        toAppend += '<thead><th>Product Name</th><th>Image</th><th>Price</th><th>Weight</th><th>ASIN</th><th>Category</th></thead>';
        if(typeof data === "object"){
            for(var i=0;i<data.length;i++){
                toAppend += '<tr><td>'+
                data[i]['product_name'][0]+'</td><td><img src="'+
                data[i]['image'][0]+'" alt=""></td><td>'+
                data[i]['price'][0]+'</td><td>'+                            
                data[i]['weight']+'</td><td>'+                                      
                data[i]['asin'][0]+'</td><td>'+                                         
                data[i]['category'][0]+'</td></tr>';
            }
            $('.data-results').append(toAppend);
        }
    }
});

これが機能していることを私が知っている私のphpコードです:

    foreach($xml->Items->Item as $item){
$items_from_amazon[] = array(
        'asin'=>$item->ASIN,
        'product_name'=>$item->ItemAttributes->Title, 
        'image'=>$item->SmallImage->URL,
        'price'=>$item->ItemAttributes->ListPrice->FormattedPrice, 
        'category'=>$item->ItemAttributes->ProductGroup, 
        'weight' => (string) $item->ItemAttributes->PackageDimensions->Weight.' lbs');
}
echo json_encode($items_from_amazon);
?>

これが私のfirebugの結果です:

ここに画像の説明を入力してください

これが私のサンプル出力です。画像のようにnullの結果が残っていても、結果を表示できますか?画像がnullの場合、画像は表示されません

ここに画像の説明を入力してください

4

1 に答える 1

3

ファイアバグの画像では、7番目のインデックスで画像がnullであると表示されているように見えます。したがって、data.image [index]を実行すると、無効なメモリ位置にアクセスしていることになります。imageプロパティは何かを指している必要があります。

             for(var i=0;i<data.length;i++){
//You can save default image in a global variable, hidden div... it is up to you. 
                var img ;
                if(data[i]['image'] === null){
                  img = defaultImage ;
                }
                else
                { 
                    img = data[i]['image'][0];  
                }
                toAppend += '<tr><td>'+
                data[i]['product_name'][0]+'</td><td><img src="'+
                img +'" alt=""></td><td>'+ //use img here
                data[i]['price'][0]+'</td><td>'+                            
                data[i]['weight']+'</td><td>'+                                      
                data[i]['asin'][0]+'</td><td>'+                                         
                data[i]['category'][0]+'</td></tr>';
            }

あなたはうまくいけばアイデアを得る。

于 2012-09-28T08:29:52.130 に答える