如何使用jQuery和打印输出迭代JSON字符串?

时间:2013-09-11 13:16:08

标签: jquery asp.net json asmx each

我正在尝试调用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);
        }); });

1 个答案:

答案 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);
        }); });