【问题标题】:JQuery Cannot use 'in' operator to search for 'length' in using Ajax reponseJQuery 不能使用“in”运算符在使用 Ajax 响应时搜索“length”
【发布时间】:2019-02-24 15:10:09
【问题描述】:

[{"ContainerNo":"FCIU3554053","Size":20,"SealNo":"172003","Weight":25209.00},{"ContainerNo":"TEMU5422909","Size":20,"封号":"164169","重量":25400.00}]

 $.ajax({
       url: "/Popu/GetContainers",
       dataType: "json",
       complete: function (response) {
           var parsedJson = JSON.parse(response.responseText);

           var thead = '', tbody = '';
           //for (var key in parsedJson[0]) {
              // thead += '<th>' + key + '</th>';
           //}
          thead += '<th>ContainerNo</th><th>Size</th><th>SealNo</th><th>Weight</th>';

          $.each(parsedJson, function (i, d) {
             tbody += '<tr><td>' + d.ContainerNo + '</td><td>' + d.Size + '</td><td>' + d.SealNo + '</td><td>' + d.Weight + '</td></tr>';
          });

          callback($('<table style="padding-left:20px;">' + thead + tbody + '</table>')).show();
  }

我收到错误 Uncaught TypeError: Cannot use 'in' operator to search 'length'。我很迷茫。做时我得到同样的错误 - parsedJson.Count。

【问题讨论】:

  • "...我在做时遇到同样的错误 - parsedJson.Count 你的代码有parsedJson.count.,而不是parsedJson.Count(大写很重要),而数组没有' t 具有 countCount 属性(它们具有 length 属性),并且访问不存在的属性不会给您“相同的错误”。
  • “我收到错误 Uncaught TypeError: Cannot use 'in' operator to search 'length'。” 恕我直言,我很确定你是不是。请使用复制和粘贴来显示您遇到的实际错误。
  • 使用for-in 获取列标题是不正确的。首先,for-in 循环没有定义的顺序。其次,您稍后在$.each 循环中将列的顺序定义为具体的ContainerNo,然后是Size。因此,既然这是硬编码的,那么也要对您的列标签进行硬编码。
  • 好的,我已经删除了 Count 并将标签更改为硬编码,但在以下行出现相同的错误:$.each(parsedJson, function (i, d) { 见上面的代码更改

标签: json ajax asp.net-mvc


【解决方案1】:

首先,您有一个 Array 的对象:

var foo = '[{"ContainerNo":"FCIU3554053","Size":20,"SealNo":"172003","Weight":25209.00},{"ContainerNo":"TEMU5422909","Size":20,"SealNo":"164169","Weight":25400.00}]';

注意:string(用单引号括起来)来证明使用 JSON.parse 的合理性,否则,如果响应已经是 Array,则不需要解析。

var parsed = JSON.parse(foo)

// iterate over your array
for(i = 0; i < parsed.length; i ++){
    console.log(`Container No: ${parsed[i].ContainerNo}, Seal No: ${parsed[i].SealNo} `);
}

输出:

Container No: FCIU3554053, Seal No: 172003
Container No: TEMU5422909, Seal No: 164169

如果你想使用Array.forEach:

parsed.forEach( i => console.log(`Container No: ${i.ContainerNo}, Seal No: ${i.SealNo} `));

输出:

Container No: FCIU3554053, Seal No: 172003 
Container No: TEMU5422909, Seal No: 164169 

【讨论】:

    猜你喜欢
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 2017-02-15
    • 2019-10-10
    • 1970-01-01
    • 2012-07-05
    相关资源
    最近更新 更多