Как получить доступ к строке в формате массива JSON - PullRequest
0 голосов
/ 20 марта 2010

У меня есть страница 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", то как мне передать массив со стороны сервера и затем проанализировать его с помощью javascript?

Ответы [ 2 ]

2 голосов
/ 20 марта 2010

Вы можете попросить 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 голос
/ 20 марта 2010

Предполагая, что у вас уже есть массив персон, вы можете использовать метод 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
    );
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...