2

我尝试搜索我的问题的所有可能匹配项,也尝试了几个解决方案,但不幸的是没有一个有效
我的后端代码:

Person p;
        foreach(DataRow dr in dt.Rows)
        {
            p = new Person();
            p.id = Convert.ToInt16(dr["Id"]);
            p.name = dr["Name"].ToString();
            p.phone = Convert.ToInt64(dr["Phone"]);

            pList.Add(p);
        }
        string ans = JsonConvert.SerializeObject(pList, Formatting.Indented);  

jQuery.ajax

function ShowData() {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "Default.aspx/Data",
                data: "{}",
                dataType: "json",
                success: function (data) {
                    alert(data.d);
                    var list = { "Person": +data };
                    for (i = 0; i < list.Person.length; i++) {
                        alert('Id: ' + list.Person[i].Id + '/nName: ' + list.Person[i].Name + '/nPhone: ' + list.Person[i].Phone);
                        console.log('Id: ' + list.Person[i].Id + '/nName: ' + list.Person[i].Name + '/nPhone: ' + list.Person[i].Phone);
                    }
                    console.log(list.Person.length);
                },
                error: function (result) {
                    alert("Error");
                }
            });
        }  

警报输出

[

  {

    "id": 1,

    "name": "Bhavik",

    "phone": 9601109585

  },

  {

    "id": 2,

    "name": "Xyz",

    "phone": 1234567890

  },

  {

    "id": 3,

    "name": "Abc",

    "phone": 9876543210

  }

]  

console.log(list.Person.length);返回未定义,因此不进入 for 循环.. 所以要解决它.. 为什么有必要指定contentTypewhiledataType已经存在.. 我也可以使用$.getJSON而不是 $.ajax。

4

2 回答 2

3

您应该将代码更改为 var list = {"Person": data.d}; 以反映您正在提醒的内容。

function ShowData() {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "Default.aspx/Data",
                data: "{}",
                dataType: "json",
                success: function (data) {
                    alert(data.d);
                    var list = { "Person": +data.d };
                    for (i = 0; i < list.Person.length; i++) {
                        alert('Id: ' + list.Person[i].Id + '/nName: ' + list.Person[i].Name + '/nPhone: ' + list.Person[i].Phone);
                        console.log('Id: ' + list.Person[i].Id + '/nName: ' + list.Person[i].Name + '/nPhone: ' + list.Person[i].Phone);
                    }
                    console.log(list.Person.length);
                },
                error: function (result) {
                    alert("Error");
                }
            });
        }  
于 2013-07-19T19:59:02.843 回答
0

这也应该是一个 GET 请求而不是一个帖子,然后你就可以使用 $.getJSON。

于 2013-07-19T19:56:37.140 回答