Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.05.2014, 06:27
Новичок на форуме
Отправить личное сообщение для Jodah Посмотреть профиль Найти все сообщения от Jodah
 
Регистрация: 01.05.2014
Сообщений: 1

Передать двумерный массив в AJAX.
Добрый день.

Не могу понять, как адекватно передать двумерный массив в AJAX.

Конкретная задача - нужно получить из БД заказы (например, 50 шт) и вывести их в виде таблицы. Массив данных выглядит примерно так:

$orders[1]['name'] = 'Товар1'
$orders[1]['price'] = 900;
$orders[2]['name'] = 'Товар2';
$orders[2]['price'] = 1200;


Если бы массив был одномерный, я бы сделал примерно так:

function getOrders(){
	$.ajax({
		url: "/orders/",
		type: "POST",
		data: ({action : 'ajax', func : 'getOrders'}),
		dataType: "json",
		success: function(response) { //Если все нормально
			document.getElementById("content").innerHTML = response[0].response[1].response[n];
		},
		error: function(response) { //Если ошибка
			document.getElementById("content").innerHTML = "Ошибка";
		}
	})
}


Но как передать двумерный массив? И возможно ли при этом сохранить адекватные названия ключей, чтобы было response[1]['name'], а не response[1][0]? Или лучше не париться с этим и передавать в AJAX готовый HTML код? Как такие задачи решаются по феншую?

Благодарю за помощь.

Последний раз редактировалось Jodah, 01.05.2014 в 06:36.
Ответить с цитированием
  #2 (permalink)  
Старый 01.05.2014, 07:44
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Если данные в JSON конвертируеются, то в чем проблема распарсить их на клиенте?
Если в PHP получается такой массив:
$arr = array( 
  array("name" => "aaa", "price" => "111"),
  array("name" => "bbb", "price" => "222"),
  array("name" => "ccc", "price" => "333"),
  array("name" => "ddd", "price" => "444") 
);


То полученные из JSON массив можно просто пробежать циклом:
var $table = $('#mytable');
response.forEach(function(obj) {
  $table.append('<tr><td>' + obj.name + '</td><td>' + obj.price + '</td></tr>');
});

При указанном dataType: 'json' jQuery само распарсит response в объект.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно передать массив из php в JS tuezov52 AJAX и COMET 2 07.11.2011 00:08
Массив AJAX + JSON RCuPeR AJAX и COMET 4 09.02.2011 12:34
Как передать массив данных на сервер DVVID Общие вопросы Javascript 7 08.04.2010 12:11
Как в ajax запросе передать файл методом POST mcpro jQuery 1 16.12.2009 11:41
Как передать массив из PHP в js (AJAX) Александр Иванов Общие вопросы Javascript 7 10.09.2009 10:22