Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как передать массив обработчику Аякс-запросов?
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Как передать массив обработчику Аякс-запросов?

Страниц (1): [1]
 

1. B_U_T_C_H - 28 Апреля, 2008 - 08:17:43 - перейти к сообщению
Есть массив bookmarks, как передать его в post запросе php странице?
2. SION-ZENIT - 28 Апреля, 2008 - 10:27:26 - перейти к сообщению
Не знаю, но я бы попробывал что нибудь вроде этого:
CODE (text):
скопировать код в буфер обмена
  1. var params='';
  2. for(var i=0;i<arr.length;i++)
  3.    params='&param'+i+'='+arr[i];
  4. request.send(params);

Но это только предположения
3. B_U_T_C_H - 28 Апреля, 2008 - 10:41:34 - перейти к сообщению
В данном случае нам придется выдергивать целиком get параметры и разбирать, что там к чему.

Когда у нас в форме ( method="post" ) есть список в котором разрешен multiselect ( name="select[]" ), все выбранные в нем значения передаются массивом. На странице обработчике принимаем массив так:
PHP:
скопировать код в буфер обмена
  1. <?
  2.    $arr = $_POST['select'];
  3. ?>


Я попробовал передать тот же select[] методом "get", получилась такая строка -

CODE (text):
скопировать код в буфер обмена
  1. ajax_requests.php?select%5B%5D=1&select%5B%5D=3&Submit=Submit
  2.  
  3. где %5B%5D = []


В таком случае
PHP:
скопировать код в буфер обмена
  1. <?
  2.    $arr = $_GET['select'];
  3. ?>


не работает.

Убираем [] из имени select[]? получаем:


CODE (text):
скопировать код в буфер обмена
  1. ajax_requests.php?select=1&select=3&Submit=Submit


Пробуем:

PHP:
скопировать код в буфер обмена
  1. $arr = $_GET['select']


в таком случаем переменной $arr присваивается значение последнего select в запросе, то есть 3.





Как ни крути. Кто знает, как передать массив??
4. SION-ZENIT - 28 Апреля, 2008 - 10:59:34 - перейти к сообщению
На сколько я знаю, в POST и GET запросах данные можно передовать только парами имя=значение, наврятли можно передать весь массив, хотя кто знает...
5. B_U_T_C_H - 28 Апреля, 2008 - 11:05:05 - перейти к сообщению
SION-ZENIT пишет:
На сколько я знаю, в POST и GET запросах данные можно передовать только парами имя=значение, наврятли можно передать весь массив, хотя кто знает...


Очень странно, но знатоки молчат;)
6. valenok - 28 Апреля, 2008 - 11:39:43 - перейти к сообщению
А вы
request.send(arr);
пробовали?
7. SION-ZENIT - 28 Апреля, 2008 - 17:01:07 - перейти к сообщению
valenok пишет:
А вы
request.send(arr);
пробовали?

Такая запись ничего не возвращает, если написать "arr="+arr то возвратиться последний элемент массива. Интересно как интерпритатор понимает, когда данные передаются через форму, что там массив
8. EuGen - 28 Апреля, 2008 - 17:55:54 - перейти к сообщению
http://php.su/functions/?serialize
9. SION-ZENIT - 28 Апреля, 2008 - 20:48:09 - перейти к сообщению
Хм.... сейчас у себя проверил
CODE (text):
скопировать код в буфер обмена
  1. request.send("param[]=123&param[]=sanya&param[]=12345");

PHP:
скопировать код в буфер обмена
  1. print_r($_POST);

выводит следующее:
Array ( [param] => Array ( [0] => 123 [1] => sanya [2] => 12345 ) ) 1
проверь у себя еще раз может что-то не так делал?

 

Powered by ExBB FM 1.0 RC1