2013-03-07 95 views
0

我从jquery调用webmethod并获取json对象,但我无法解析和读取json对象。请帮我看看我做错了什么。我有3个警报(),我把他们旁边的意见,他们展示一下...jquery asp.net无法解析json对象

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

,但我只想显示“阿里夫”。我的JSON对象是否错误?我应该使用单引号吗?

谢谢

回答

1

你有数组,使用索引,还可以使用大括号中的数据,使对象。

Live Demo

更改JSON字符串

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

使用数组下标索引来访问其元素

data.d[0].id 
+0

又该我用呢? – 2013-03-07 12:27:59

+0

它不工作...它显示未定义... – 2013-03-07 12:29:39

+0

我已更新我的回答 – Adil 2013-03-07 12:33:31

0

你只需要你解析数据:

var result = jQuery.parseJSON(data.d); 
alert(result[0].Id); 
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);    
    }