jQuery AJAX意外的`undefined`结果(Valid JSON)

时间:2013-02-14 17:32:05

标签: jquery ajax jquery-mobile

我正在开发一个PhoneGap / jQuery Mobile应用程序。我在之前使用的脚本上得到了一些奇怪的结果。

$.ajax({type: "GET",
            url: "http://****.net/****/GetMembers.php",
            data: {get_param: "Member"},
            dataType: "json",
            success: function (data) {
                $.each(data, function (index, element) {
                    $("#members-content").append("<li><a id='members-a-" + element.ID + "' data-id='" + element.ID + "' href='#member-details'><img src='" + element.ImgURL + "' /><h3>" + element.Name + "</h3></a></li>");
                    $("#members-a-" + element.ID).bind('click', function () {Members.MemberID = $(this).attr('data-id'); MemberDetails.Load(); });
                    $("#members-content").listview("refresh");
                    });
           }
    });

从webservice返回JSON:

  

[{“会员”:{“ID”:1,“姓名”:“会员1”,“ImgURL”:null}},{“会员”:{“ID”:2,“姓名”:“会员2“,”ImgURL“:null}},{”会员“:{”ID“:3,”姓名“:”会员3“,”ImgURL“:null}},{”会员“:{”ID“ :4,“姓名”:“会员4”,“ImgURL”:null}}]

在我的#members-content列表中,我为undefined名称元素获取了<h3>

3 个答案:

答案 0 :(得分:2)

你有一个双嵌套对象。你应该使用

element.Member.ImgURL

e.g。看看json:

[
    {   <--element in your .each() loop
       "Member": {
           "ID":1,
           "Name":"Member 1",
           "ImgURL":null
       }
    },
    { etc...

答案 1 :(得分:1)

每个元素都有一个成员。所以:

element.ID

应该是:

element.Member.ID

ImgURL和Name

也是如此

答案 2 :(得分:1)

您有两种选择:find the two in fiddle here

要么像现在一样循环,只需要进行一次更改:

这必须像element.Member.Name

一样

或者像这样再次循环:

$.each(data, function (index, element) {
   $.each(element, function (index, e) {
    console.log(e.Name); // <----here you will get the correct response
   });
});