Добавление ajaxed JSON к существующей таблице - PullRequest
1 голос
/ 24 мая 2011

http://jsfiddle.net/mplungjan/LPGeV/

Чего мне здесь не хватает и есть ли более элегантный способ получить данные ответов?

$.post('/echo/json/',{
    "json": JSON.stringify({
      "rows": [
        {
        "cell1":"row 2 cell 1",
        "cell2":"row 2 cell 2"
        },
        {
        "cell1":"row 3 cell 1",
        "cell2":"row 3 cell 2"
        }        
    ]})
    },
    function(response) {
       $response = JSON.parse(response)
       $response.each(function() { // rows
         var row = '<tr><td>'+$(this).cell1+'</td><td>'+$(this).cell2+'</td></tr>';
         $('#tableID').append(row);
      });                             
    }
);

ОБНОВЛЕНИЕ: Это работает:

function(response) {
   $.each(response.rows,function() { // rows
       var row = '<tr><td>'+this.cell1+'</td><td>'+this.cell2+'</td></tr>';
       $('#tableID').append(row);
    });                             
}

Ответы [ 2 ]

3 голосов
/ 24 мая 2011

Вы должны установить тип данных в 'json' (или использовать `.getJSON () ´, тогда jQuery проанализирует ответ за вас. (РЕДАКТИРОВАТЬ: На самом деле jQuery уже распознает ответ как JSON и анализирует для вас, так что вы не все равно не нужно разбирать.)

И поскольку данные ответов являются простыми объектами JavaScript, имеет смысл не заключать их в jQuery, а использовать метод jQuerys "other" .each():

$.post('/echo/json/',{
    dataType: "json",
    "json": JSON.stringify({
      "rows": [
        {
        "cell1":"row 2 cell 1",
        "cell2":"row 2 cell 2"
        },
        {
        "cell1":"row 3 cell 1",
        "cell2":"row 3 cell 2"
        }        
    ]})
    },
    function(response) {
       $.each(response.rows, function() {
         var row = '<tr><td>'+ this.cell1+'</td><td>'+ this.cell2+'</td></tr>';
         $('#tableID > tbody').append(row);
      });                             
    }
);

РЕДАКТИРОВАТЬ: И вам нужно перебрать response.rows и ни response. И Джефф тоже прав.

http://jsfiddle.net/LPGeV/15/

2 голосов
/ 24 мая 2011

Я не могу загрузить jsfiddle, но вы хотите добавить к телу, а не к таблице.

$('#tableID > tbody:last').append(row);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...