Формат JSON для 3 полей ввода - PullRequest
1 голос
/ 04 февраля 2011

Мне нужно создать JSON на стороне сервера, что я знаю, как это сделать.Однако я не знаю, как отформатировать эти данные json, чтобы их можно было легко использовать в jQuery?

Вот сценарий, который у меня есть на данный момент.Каков наилучший способ форматирования данных JSON, чтобы я мог заполнить 3 поля ввода?

$('input#btnGet').click(function() {
    $.ajax({
        url: 'generate_json.aspx',
        type: 'POST',
        data: { intPageID:1 },
        success: function(results) { 
            $('input#id').val('id goes here');
            $('input#heading').val('heading goes here');
            $('input#content').val('content goes here');
        }
    });
});

Ответы [ 3 ]

3 голосов
/ 04 февраля 2011

Если вы добавите dataType: 'json' к вашим опциям, тогда jQuery непосредственно декодирует JSON в объект JavaScript:

"json": оценивает ответ как JSON и возвращает объект JavaScript. В jQuery 1.4 данные JSON анализируются строго; любой искаженный JSON отклоняется и выдается ошибка разбора. (См. Json.org для получения дополнительной информации о правильном форматировании JSON.)

Предполагая, что JSON, который вы получаете / генерируете, равен

'{"id": 6, "heading": "heading", "content": "content"}' 

ваш код будет выглядеть так:

$.ajax({
    url: 'generate_json.aspx',
    type: 'POST',
    data: { intPageID:1 },
    dataType: 'json',
    success: function(results) { 
        $('#id').val(results.id);
        $('#heading').val(results.heading);
        $('#content').val(results.content);
    }
});

Если ваша строка JSON представляет собой массив, то, конечно, results будет массивом JavaScript, и вам придется зацикливаться на нем.


Btw. поскольку идентификаторы уникальны, нет необходимости добавлять имя тега в селекторе.

1 голос
/ 04 февраля 2011

Если ваш сервер возвращает это:

{
  "id": "1",
  "heading": "yadayada"
  "content": "foobar"
}

Вы можете использовать его как:

success: function(results) { 
   $('input#id').val(results.id);
   $('input#heading').val(results.heading);
   $('input#content').val(results.content);
}
1 голос
/ 04 февраля 2011

Просто укажите dataType как "json", и все готово!

$.ajax({
    url: 'generate_json.aspx',
    type: 'POST',
    data: { intPageID:1 },
    dataType: "json",
    success: function(result){$("#heading").val(result.heading)}
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...