javascript - Ajax未捕获类型错误: Cannot read property 'length' of undefined

标签 javascript jquery html json ajax

我想使用外部 URL 中的 json 数据填充我的选择框。

我不断得到

Uncaught TypeError: Cannot read property 'length' of undefined

下面是我的 json 响应

{"ecoachlabs":{
  "status":"201",
  "msg":"Form data loaded successfully.",
  "categories":[
    {"id":"2","category":"church"},{"id":"3","category":"financial institution"},
    {"id":"4","category":"old students association"},
    {"id":"1","category":"school"},
    {"id":"5","category":"tertiary"}
  ],
  "storage":[
    {"id":"1","category":"100MB"},{"id":"2","category":"250MB"},
    {"id":"3","category":"500MB"},{"id":"4","category":"2GB"},
    {"id":"5","category":"3GB"},{"id":"6","category":"5GB"}
  ]
  }}

下面是我的ajax邮政编码

$(document).ready(function() {
  $("#institution_category").click(function() {

    var formData = {
      load_request_form_data: "1"
    }; //Array 

    $.ajax({
      url: "http://api.ecoachlabs.com/v1/requests/api.php",
      type: "POST",
      data: formData,
      success: function(data, textStatus, jqXHR) {
        console.log(data.ecoachlabs.categories); //data - response from server
        $.each(data.categories, function(i, v) {
          $('#institution_category').append($('<option value="' + v.id + '">' + v.category + '</option>'));
        });
      },
      error: function(jqXHR, textStatus, errorThrown) {

      }
    });
  });
});

最佳答案

您执行 onsole.log(data.ecoachlabs.categories); 的控制台日志,然后使用 data.categories。将 data.categories 更改为 data.ecoachlabs.categories 以正确解析对象,否则您将得到 undefined。请参阅下面的工作片段:

var formData = {
  load_request_form_data: "1"
}; //Array 

$.ajax({
  url: "http://api.ecoachlabs.com/v1/requests/api.php",
  type: "POST",
  data: formData,
  success: function(data, textStatus, jqXHR) {
    console.log(data.ecoachlabs.categories); //data - response from server
    $.each(data.ecoachlabs.categories, function(i, v) {
      $('#institution_category').append($('<option value="' + v.id + '">' + v.category + '</option>'));
    });
  },
  error: function(jqXHR, textStatus, errorThrown) {

  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='institution_category'>

</select>

关于javascript - Ajax未捕获类型错误: Cannot read property 'length' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42533706/

相关文章:

javascript - 所有浏览器都支持 querySelector 吗?

javascript - 单击时将类添加到具有相同 ID 的元素,在页面刷新时记住类

javascript - Angular 仅在没有焦点时更新输入字段

html - 垂直对齐不起作用

javascript - 修改javascript中的局部变量

javascript - 使用地理定位更新标记位置后无法在 Leaflet 中绘制

PHP-JSON : Check broken links

jquery - 如何根据图像宽度动态禁用cloudzoom

html - CSS 悬停整行以及单个单元格

javascript - jquery show () 在关闭面板后不起作用