jquery asp.net无法解析json对象

时间:2013-03-07 12:26:00

标签: jquery asp.net json

我从jquery调用webmethod并获取json对象,但我无法解析并读取json对象。请帮我找到我做错了什么。我有3个警报(),我正在他们旁边放置评论... ...

我的jquery代码就是这个

$('#btn_second').click(function () {
            //$('#txt_isim_4').val('test arif');
            $.ajax({
                type: "POST",
                url: "Registration.aspx/get_selected_professional",
                data: "{'id':'2'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    alert('1:' + data); // display [object Object]
                    alert('2:' + data.d.firstname); // display undefined
                    alert('3:' + data.d);  // display [{"id":"2","firstname":"arif"}]
                }
            });
        });

但我想只显示“Arif”。我的json对象错了吗?我应该使用单引号吗?

谢谢

3 个答案:

答案 0 :(得分:1)

你有数组,使用索引,并在数据中使用大括号来制作对象。

<强> Live Demo

将json字符串更改为

[{"id":"2","firstname":"arif"}]

使用数组索引索引器访问其元素

data.d[0].id

答案 1 :(得分:0)

您只需要解析数据:

var result = jQuery.parseJSON(data.d);
alert(result[0].Id);

答案 2 :(得分:0)

假设您的webmethod是这样的:

public string get_selected_professional(string id)
{
   List<MyClass> requiredData= GetRequiredData(id);
   //your required logic

   //string requiredData= "[{\"id\":\"2\",\"firstname\":\"arif\"}]";
   //return requiredData;

   //or

   return new JavascriptSerializer().Serialize(requiredData);
}

其中MyClass

public class MyClass
{
   public int id {get;set;}
   public string firstname{get;set;}
}

然后你应该在客户端的ajax :success中执行此操作:

success: function (data) {
                    var jsonData =$.parseJSON(data);
                    alert('1:' + jsonData); // display [object Object]
                    alert('2:' + jsonData.d.firstname); // display undefined
                    alert('3:' + jsonData.d);             
     }