我正在尝试调用Web服务,该服务返回有效的JSON。输出的示例如下(具有两个条目的列表):
{"d":"[{\"Id\":9,\"Name\":null,\"User\":null,\"Email\":\"email@gmail.com\",\"Phone\":\"121212121\",\"Address\":null,\"Address2\":null,\"City\":null,\"ZipCode\":\"8700\",\"Country\":null,\"TeachingSkills\":[]},{\"Id\":11,\"Name\":null,\"User\":null,\"Email\":\"email@gmail.com\",\"Phone\":\"1212121\",\"Address\":null,\"Address2\":null,\"City\":null,\"ZipCode\":\"3520\",\"Country\":null,\"TeachingSkills\":[]}]"}
现在我想迭代此列表中的项目,并打印出名称。
所以我尝试了以下内容:
function loadTutors() {
var url = '<%= ResolveUrl("~/services/tutorservice.asmx/gettutors") %>';
$.ajax({
type: "POST",
data: "{'data':'" + 'test-data' + "'}",
url: url,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (d) {
loadMap(d);
},
error: function () {
}
});
}
function loadMap(tutors) {
var locations = [];
$.each(tutors.d, function (obj) {
$('#text').append(obj.Email);
});
});
标签文字的输出为空。如果我说$.each(tutors)
它也是空的。
我已经尝试了很多版本,我输出的最好的是一长串随机数字,我不知道来自哪里。
我在这里做错了什么?
编辑:
来自答案的尝试。
解析为JSON并迭代 - 这导致许多警告框中包含数字(0..1 ... 2 ... 3 ..)
function loadTutors() {
var url = '<%= ResolveUrl("~/services/tutorservice.asmx/gettutors") %>';
$.ajax({
type: "POST",
data: "{'data':'" + 'test-data' + "'}",
url: url,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (d) {
loadMap(JSON.parse(d.d));
},
error: function () {
}
});
}
function loadMap(tutors) {
var locations = [];
$.each(tutors, function (obj) {
alert(obj.toString());
$('#text').append(obj.Email);
}); });
答案 0 :(得分:1)
使用JSON.parse将json字符串解析为对象
success: function (d) {
loadMap(JSON.parse(d.d));
},
function loadMap(tutors) {
var locations = [];
$.each(tutors, function (i, obj) {
alert(obj.toString());
$('#text').append(obj.Email);
}); });