我想将json数据访问到从Asp.Net Web方法返回的jQuery中。 这是我的网络方法
[WebMethod(EnableSession=true)]
public string GetChat() {
//
// Code to get data into dataset from database
//
// below code to convert dataset to json string
JavaScriptSerializer serializer = new JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in ds.Tables[0].Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn dc in ds.Tables[0].Columns)
{
row.Add(dc.ColumnName.Trim(), dr[dc]);
}
rows.Add(row);
}
return serializer.Serialize(rows);
}
这是我的jQuery代码。
$.ajax({
type: "POST",
contentType: "application/json",
url: "../chat.asmx/GetChat",
dataType: "json",
success: function (data) {
alert(data.d[0].Name);
},
error: function (result) {
alert("Error");
}
});
这是Json Response Sample:
[
{
"EmployeeId":3,
"Name":"Khushbu Agarwal",
"Cnt":2
},
{
"EmployeeId":6,
"Name":"Priyanka Jain",
"Cnt":3
}
]
现在,当我通过语句访问jQuery中的数据时:
alert(data.d[0].Name);
显示Undefined
谁可以帮我这个事。我是json的新手。
提前谢谢。
答案 0 :(得分:1)
这里有双JSON序列化。不要在WebMethod中进行管道连接。只需返回一个包含数据的对象:
[WebMethod(EnableSession=true)]
public List<Dictionary<string, object>> GetChat()
{
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
foreach (DataRow dr in ds.Tables[0].Rows)
{
Dictionary<string, object> row = new Dictionary<string, object>();
foreach (DataColumn dc in ds.Tables[0].Columns)
{
row.Add(dc.ColumnName.Trim(), dr[dc]);
}
rows.Add(row);
}
return rows;
}
然后在成功回调中,例如,如果你想访问第一行:
success: function (data) {
alert(data.d[0]);
},
如果您想访问第一行的某些特定列名称:
alert(data.d[0]['ColumnName'].Value);