在ajax调用中循环时出错

时间:2014-09-22 13:20:15

标签: javascript jquery ajax

我正在尝试打印特定json对象的结果。我收到了

Uncaught TypeError: undefined is not a function

尝试执行以下代码时:

$.getJSON("http://test.test.com/api/service/Something()?username=" + username + "&password=" + password + "&$format=json", function( d ){
    var tr;
    results = d.d.results;
    for (var i=0; i<results.length; i++){
        tr = ("</tr>");
        tr.append("<td>" + results[i].something + "</td>");
        tr.append("<td>" + results[i].something_2 + "</td>");
        tr.append("<td>" + results[i].something_3 + "</td>");
        $('table').append(tr);
    }

我几乎从另一个问题复制了上面的代码,显然我做错了。 错误来自此处&gt; tr.append("" + results[i].something + "")

3 个答案:

答案 0 :(得分:2)

tr = $("<tr/>");

您错过了$,并且/位置错误。

另外:

tr.append("<td>" + results[i].something + "</td>");
          ^^^^^ missing

答案 1 :(得分:1)

tr没有名为append的函数,因为您从未定义过一个函数。以下是您创建tr的方式:

var tr;
tr = ("</tr>");

所以tr此时可能只是一个字符串。你永远不会在上面定义任何函数,所以这不会起作用:

tr.append(...);

也许你打算创建一个jQuery对象?:

tr = $("</tr>");

虽然在这种情况下你可能也想要创建元素,而不是关闭它:

tr = $("<tr/>");

(另请注意,您的第一个append()缺少开场td元素。)

答案 2 :(得分:0)

更改

tr = ("</tr>");
tr.append("" + results[i].something + "</td>");

tr = $("<tr/>");
tr.append("<td>" + results[i].something + "</td>");