我有一个asp.net页面,它将对象列表作为json字符串返回给ajax请求。字符串如下:
[
{"Name":"Don","Age":23,"Description":"Tall man with no glasses"}
,{"Name":"Charlie","Age":24,"Description":"Short man with glasses"}
]
我想单独访问每个字段,例如人名,年龄,描述等。
我该怎么做?我正在使用JQuery进行客户端脚本编写。
为了进一步说明,这里是服务器端C#代码 -
protected void Page_Load(object sender, EventArgs e)
{
if (Request["field1"] != null)
{
createPersonList();
}
}
private void createPersonList()
{
List<Person> PersonList = new List<Person>();
Person Atiq = new Person("Atiq Hasan Mollah", 23, "Whassap Homie");
Person Sajib = new Person("Sajib Mamud", 24, "Chol kheye ashi");
PersonList.Add(Atiq);
PersonList.Add(Sajib);
string json = JsonConvert.SerializeObject(PersonList);
Response.Clear();
Response.Write(json);
Response.End();
}
客户端javascript代码如下 -
$(function()
{
$("#SimpleButton").click(function()
{
$.post("Default.aspx", {field1: $("#field1").val()},function(data)
{
data = $.trim(data);
$("#field2").val(data);
var myObject = eval('(' + data + ')');
$(data).each(function(index, person)
{
alert( 'Name: ' + person.Name +
' Age: ' + person.Age +
' Description: ' + person.Description
);
});
});
});
});
现在,如果我自己不使用“eval”,那么如何从服务器端传递arraylist然后使用javascript解析呢?
答案 0 :(得分:2)
您可以要求jQuery自动解析JSON并返回JavaScript对象而不是字符串:
var people = $.getJSON('http://example.com/path/to/page');
如果您想使用POST
而非GET
,则可以提供数据类型作为第四个参数:
$.post("Default.aspx", {field1: $("#field1").val()}, function(data) { ... }, "json");
然后您可以像访问普通对象一样访问它:
$.each(people, function(function (i, person) {
$('#people').append($('<p>').text(person.Name));
}
答案 1 :(得分:1)
假设您已经拥有了人员数组,您可以使用each方法遍历元素:
var persons = [
{"Name":"Don","Age":23,"Description":"Tall man with no glasses"},
{"Name":"Charlie","Age":24,"Description":"Short man with glasses"}
];
$(persons).each(function(index, person) {
alert('Name: ' + person.Name +
' Age: ' + person.Age +
' Description: ' + person.Description
);
});