0

だから私はこのコードのビットが機能することを知っています

$.getJSON('data/book.json', function(jd) {

         $('#stage').html('<p> id: ' + jd.data.productTypeList[0].id + '</p>');
         $('#stage').append('<p>name : ' + jd.data.productTypeList[0].name+ '</p>');
         $('#stage').append('<p> longName: ' + jd.data.productTypeList[0].longName+ '</p>');

});

問題は、ここに更新しようとしてエラーが発生することです

var jqxhr = $.getJSON("data/book.json")
          .success(function(data, status, xhr) { 
            $.each(data, function(i,item){
              //create book for each item and then insert into the collection
              tmpItem=new Book({id:item.data.productTypeList[0].id,category:item.data.productTypeList[0].name,name:item.data.productTypeList[0].longName});
              self.add(tmpItem);
            });
            //dispatch customized event
            self.trigger("fetchCompleted:Books");
          })
          .error(function() { alert("error"); })
          .complete(function() {
                console.log("fetch complete + " + this);
          });
      }

しかし、これを機能させることができず、item.data is undefined というエラーが表示され続けます。

並べ替えが完了したら、配列内のすべての結果を取得できるように、0 を i an に変更する予定です

ありがとう

4

3 に答える 3

2

あなた$.eachは間違っています。

  1. データ内のアイテムではなく、データをそれぞれ調べます。
  2. each の中でもう一度「item」を尋ねますが、これは利用できません。

これを試して:

$.each(data.productTypeList, function(i, productType){
    // Use "productType" here, example:
    // new Book( { id: productType.id } )
}
于 2012-11-14T08:03:58.770 に答える
0

お気に入りのブラウザー コンソールで、item.data を含む行にブレークポイントを設定します。

そこにいる間、data、i、および item 変数を調べて、期待どおりのものが含まれていることを確認します。

何が問題なのかを判断し、その時点で修正するのは非常に簡単です。

于 2012-11-14T08:04:05.247 に答える
0

これを試して:

if (!('productTypeList' in data)) {
    //catch illegal response 
}
$.each(data.productTypeList, function(i,item){
    //create book for each item and then insert into the collection
    tmpItem=new Book({id:item[i].id,category:item[i].name,name:item[i].longName});
    self.add(tmpItem);
});
于 2012-11-14T08:04:15.277 に答える