【问题标题】:How to iterate JSON string using jQuery and print output?如何使用 jQuery 迭代 JSON 字符串并打印输出?
【发布时间】:2013-09-15 12:59:19
【问题描述】:

我正在尝试调用返回有效 JSON 的 Web 服务。输出示例如下(包含两个条目的列表):

{"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);
        }); });

【问题讨论】:

    标签: jquery asp.net json asmx each


    【解决方案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);
            }); });
    

    【讨论】:

    • 看看我的尝试。这会导致多个警报框带有 0..1..2..3..4..5 :-) 并且文本标签仍然是空的。我是不是执行错了?
    • 哦,您输出的是索引而不是值,请参阅我的答案
    • 啊啊啊啊啊!当然!非常感谢 - 现在它可以工作了。一个很大的帮助:)
    • 没问题,虽然我不确定为什么 jquery 没有正确解析对象,或者它可能是 Web 服务。
    猜你喜欢
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多