我有一些从后端返回到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
...
谢谢!
答案 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