我不知道这是否是格式错误的 JSON 字符串,但我无法弄清楚如何解析每个结果以获取数据。
这是来 self 的 $.ajax 函数的 data.d 响应(它在代码隐藏 (C#) 中调用 WebMethod):
{"Row":[
{"ID1":"TBU9THLCZS","Project":"1","ID2":"Y5468ASV73","URL":"http://blah1.com","Wave":"w1","StartDate":"18/06/2015 5:46:41 AM","EndDate":"18/06/2015 5:47:24 AM","Status":"1","Check":"0"},
{"ID1":"TBU9THLCZS","Project":"2","ID2":"T7J6SHZCH","URL":"http://blah2.com","Wave":"w1","StartDate":"23/06/2015 4:35:22 AM","EndDate":"","Status":"","Check":""}
]}
在我看过的所有示例中,只有一两个显示了我的“行”所在的位置,并且解决方案不相关,例如一个人在最后一个数组后面有一个逗号。
即使不是直接的答案,我也会很高兴得到一些指示。
我尝试了response.Row、response[0]、使用$.each的各种组合,但我就是无法得到它。
编辑,这是我的 ajax 调用:
$.ajax({
url: "Mgr.aspx/ShowActivity",
type: "POST",
data: JSON.stringify({
"ID": "null"
}),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var data = response.hasOwnProperty("d") ? response.d : response;
console.log(data);
},
error: function (xhr, ajaxOptions, thrownError) {
$('#lblResErr').html('<span style="color:red;">' + thrownError);
}
});
目前我只是尝试将 ID1 值和 ID2 值输入控制台。
编辑(已解决):感谢 YTAM 和 Panagiotis!
success: function (response) {
var data = response.hasOwnProperty("d") ? response.d : response;
data = JSON.parse(data);
console.log(data);
}
现在控制台向我显示两个对象的数组,现在我知道如何处理它们!!
最佳答案
首先你必须使用 JSON.parse 解析字符串
var data= JSON.parse(rowData);
然后你将得到如下所示的对象,
data = {
"Row": [
{
"ID1":"TBU9THLCZS",
"Project":"1",
"ID2":"Y5468ASV73",
"URL":"http://blah1.com",
"Wave":"w1",
"StartDate":"18/06/2015 5:46:41 AM",
"EndDate":"18/06/2015 5:47:24 AM",
"Status":"1",
"Check":"0"
},
{
"ID1":"TBU9THLCZS",
"Project":"2",
"ID2":"T7J6SHZCH",
"URL":"http://blah2.com",
"Wave":"w1",
"StartDate":"23/06/2015 4:35:22 AM",
"EndDate":"",
"Status":"",
"Check":""
}
]}
这里我给出两个选项,要么直接从数据变量检索数据,要么通过循环。
data.row[0].ID1
data.row[0].Project
data.row[0].ID2
等等
或
使用循环,
var result = json.row;
for (var i = 0; i < result.length; i++) {
var object = result[i];
for (property in object) {
var value = object[property];
}
}
希望这有帮助。
关于javascript - 如何解析具有多行/结果的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31019354/