遍历ajax值

时间:2018-09-19 10:49:30

标签: javascript jquery html ajax

我有一些从后端返回到ajax的值。 这段代码中的问题是,当我执行console.log(myRows)时,单元格中的值未定义。

  $(document).on('click', ".myButton", function () {



        $.ajax({
            type: "POST",
            url: "Administration.aspx/GetMyCollection",
            data: JSON.stringify({ 'Parameter': Parameter }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data.d.length > 0) {
                    var myRows = "";

                    $.each(data, function (i, values) {

                        values.ObjectID;
                        values.ObjectName;
                        values.ObjectValue;
                        values.Object;
                        console.log(values);

                        myRows += "<tr><td>" + values[1].ID + "</td><td>" + values[1].ObjectName + "</td><td>" + values[1].ObjectValue + "</td><td>" + values[1].Object + "</td></tr>";
                        console.log(myRows);
                    });

                }
                console.log("Saved!");
            },
            error: function () {
                console.log("Not Saved!");
           }

        });
    });

但是当我更改代码并添加值[1]时,值会正确显示。

 myRows += "<tr><td>" + values[1].ID + "</td><td>" + values[1].ObjectName + "</td><td>" + values[1].ObjectValue + "</td><td>" + values[1].Object + "</td></tr>";

我需要帮助来更改代码,以便它将遍历所有9个值(从1到9)并将结果放入myRows单元格中,以便可以显示所有值。

Json代码:

d   […]
0   {…}
ObjectID      1
ObjectName    Vegas
ObjectValue   234
Object        Arizona
1   {…}
ObjectID      2
ObjectName    Chicago
ObjectValue   211
Object        Montana
2   {…}
ObjectID      3
ObjectName    Livepool
ObjectValue   123
Object        London
... 

谢谢!

3 个答案:

答案 0 :(得分:1)

在遍历数组时,values将保留该对象。因此,您不需要使用values[i]values[1]。此外,似乎您在data.d中有数据,因此应该对其进行迭代。

因此,您可以将代码更新为关注

$.each(data.d, function (i, values) {
  myRows += "<tr><td>" + values.ObjectID + "</td><td>" + values.ObjectName + "</td><td>" + values.ObjectValue + "</td><td>" + values.Object + "</td></tr>";
});
console.log(myRows);

注意,请在each块后面添加日志,以查看完整的行集。

答案 1 :(得分:1)

您没有遍历正确的项目-$.each(data应该为$.each(data.d,因为d包含数组。然后,每次循环运行values都会代表数组中的单个对象,您可以从代码中删除[1]

我还认为values.ID应该是values.ObjectID,根据您在问题中提供的数据样本-您的任何对象上都没有“ ID”属性。

最后,我自由地将console.log(myRows);移至循环结束之后-然后,您只会看到整个字符串一次,而不是每次都重复添加额外的位,这可能会造成混淆

$.each(data.d, function (i, values) {
  console.log(JSON.stringify(values));
  myRows += "<tr><td>" + values.ObjectID + "</td><td>" + values.ObjectName + "</td><td>" + values.ObjectValue + "</td><td>" + values.Object + "</td></tr>";
});
console.log(myRows);

答案 2 :(得分:0)

使用这样的函数制作tr字符串

COMPLEX