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 的错误未定义。

一旦我排序后,我计划将 0 更改为 i an,以便它将获取数组中的所有结果

谢谢

4

3 回答 3

2

$.each错了。

  1. 你们每个人都处理数据,而不是数据中的项目。
  2. 您在 each 中再次询问“项目”,这是不可用的。

试试这个:

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

在您喜欢的浏览器控制台中,在包含 item.data 的行上设置断点。

在那里,查看数据、i 和项目变量,并确保它们包含您期望的内容。

确定哪里出了问题并在那时修复它应该很容易。

于 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 回答