Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 11:11   #1
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию Передача массива данных с использованием JQuery

Задача следующаяя:
- необходимо отправить методами JQuery на сервер массив данных, сформированный стандартными средствами.
Код:
//************ Перменные *************//
// Период обновления
var doloadtime="3000";
// Переменная таймоута отправки запросов
var timeout=null;
// Переменная запроса в виде массива
var request=new Array();
//************************************//

//--- Функция формирования запроса на отправку ---//
function SendRequest(action,id){
	// Сбрасываем таймаут
	if (timeout) clearTimeout(timeout);
	// Записываем данные для запроса в переменную
	if (id) request.id=id;
	if (action) request.action=action;
	doLoad();
}
//------------------------------------------------//  

//--- Функция отправления запроса ---//
function doLoad(){
	// Сбрасываем таймаут
	if (timeout) clearTimeout(timeout);
	$.load('index.php', 
		{'request[]': request}, // <---------- Тут проблема
 		onAjaxSuccess
		);
}
//----------------------------------//

//--- Функция обработки поступившего ответа на запрос ---//
function onAjaxSuccess(data) {
	// Выполняем лученный ответ
	eval(data);
	// Сбрасываем тайаут и устанавливаем новый
	if (timeout) clearTimeout(timeout);
	timeout = setTimeout('doLoad()', doloadtime);
}
//-------------------------------------------------------//
Как это сделать?
Пробывал:
Код:
	$.load('index.php', 
		{'request[]': request}, // <---------- Тут проблема
 		onAjaxSuccess
		);
и
Код:
	$.load('index.php', 
		request, // <---------- Тут проблема
 		onAjaxSuccess
		);
Результат нулевой. Попробывал заменить .load на .post - результат аналогичный, т.е. нулевой.

Последний раз редактировалось Виталий Желтяков; 22.04.2010 в 11:55.
Виталий Желтяков вне форума Ответить с цитированием
Старый 22.04.2010, 16:23   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

сериализуйте массив и передавайте
Подключите плагин.
Использовать:
Код:
var myarray = ['aaa','bbb','ccc'];
alert($.toJSON(myarray));

Последний раз редактировалось SkyM@n; 22.04.2010 в 16:28.
SkyM@n вне форума Ответить с цитированием
Старый 22.04.2010, 19:09   #3
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Спасибо за подсказку про сериализацию.
Виталий Желтяков вне форума Ответить с цитированием
Старый 23.04.2010, 07:43   #4
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Нашел красивое решение:
Код:
//************ Перменные *************//
// Период обновления
var doloadtime="3000";
// Переменная таймоута отправки запросов
var timeout=null;
// Переменная запроса в виде массива
var request={};
//************************************//

//--- Функция формирования запроса на отправку ---//
function SendRequest(action,id){
	// Сбрасываем таймаут
	if (timeout) clearTimeout(timeout);
	// Записываем данные для запроса в переменную
	if (id) request={'id': id};
	if (action) request=request&&{'action': action};
	doLoad();
}
//------------------------------------------------//  

//--- Функция отправления запроса ---//
function doLoad(){
	// Сбрасываем таймаут
	if (timeout) clearTimeout(timeout);
	$.load('index.php', 
		request, 
 		onAjaxSuccess
		);
}
//----------------------------------//

//--- Функция обработки поступившего ответа на запрос ---//
function onAjaxSuccess(data) {
	// Выполняем лученный ответ
	eval(data);
	// Сбрасываем тайаут и устанавливаем новый
	if (timeout) clearTimeout(timeout);
	timeout = setTimeout('doLoad()', doloadtime);
}
//-------------------------------------------------------//
Виталий Желтяков вне форума Ответить с цитированием
Старый 23.04.2010, 11:24   #5
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Конечно! Можно создавать и вручную. Я-то думал, что у вас массивище данных, а оказывается, два параметра
SkyM@n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача потока с использованием idtcpServer Lvenok Помощь студентам 0 24.03.2010 19:03
Передача массива по указателю liver1981 Общие вопросы C/C++ 3 21.04.2009 17:07
Передача данных(массива) через DLL. acorables Общие вопросы Delphi 4 05.02.2007 13:16