“未捕获的TypeError:在jQuery中无法读取null的属性'length'

时间:2013-12-04 22:07:15

标签: javascript jquery json

我在按HTML上的按钮时定义了以下操作:

$(document).ready(function() {
  $("#query").keydown(function () {
    // stuff
    $.get(url, function (result) {
    console.log(result);

    var list = "";

    for (var i = 0, l = result["results"].length; i < l; i++) {
      list += '<li>' + result["results"][i]["label"] + '</li>';
    }

    list = "Here are some results: <ul>" + list + "</ul>";

  });
});

“result”中的内容是以下形式的JSON数组:

{"results":[{"label":"something"},{"label":"something else"},{"label":"many other ones"}]}

那么,为什么我对length的引用被解释为对null值属性的引用?

1 个答案:

答案 0 :(得分:12)

我相信你得到了一个json输入。您忘了将json转换为实际的Javascript对象。您可以使用以下两种方法之一来完成此操作。

$(document).ready(function() {
  $("#query").keydown(function () {
  // stuff
    $.get(url, function (result) {
    result = JSON.parse(result);
    console.log(result);

    var list = "";

    for (var i = 0, l = result["results"].length; i < l; i++) {
      list += '<li>' + result["results"][i]["label"] + '</li>';
    }

  list = "Here are some results: <ul>" + list + "</ul>";

});

或者

$(document).ready(function() {
  $("#query").keydown(function () {
  // stuff
    $.getJSON(url, function (result) {
    console.log(result);

    var list = "";

    for (var i = 0, l = result["results"].length; i < l; i++) {
      list += '<li>' + result["results"][i]["label"] + '</li>';
    }

  list = "Here are some results: <ul>" + list + "</ul>";

});