AJAX: передача массива из js в php

mscoder

Новичок
AJAX: передача массива из js в php

добрые день
у меня следующая ситуация
есть много чекбоксов с именами типа cb1[1], необходимо передать их пхп функции по нажатию кнопки
делал так:
js:
PHP:
function ByMaker()
		{
			PreloaderVis();
			var auc = new Array();
			obj = document.auc;			
			for(i=0; i<obj.length; i++)
			{
				if (obj[i].checked)
				{
					if (obj[i].name.match(/^cb1\[([0-9]+)\]/)) 
					{
						n = String( RegExp.$1 );
						auc[n] = obj[i].value;
					}
				}
			}
			x_ByMaker(auc, show_result);
		}
php(просто пример, вывод значений массива):
PHP:
function ByMaker($in)
{
  $out = null;  
  foreach($in as $k => $v)
  {
    $out .= $k . "=" . $v . ";";
  }
  return $out;
}
в результате тишина на выходе, если из яваскрипта передаю строку, то в пхп нормально получаю, может что не так делаю...
заранее благодарен за ответ
 

GogA

Новичок
а если передавать через гет вот так:
url.php?auc[]=value1&auc[]=value2&auc[]=value3
? :)
 

deepslam

Новичок
GogA
В принципе верно все подсказал, только вот как то некрасиво ИМХО.
 

yzoom

Новичок
А если использую _POST что делать?
Еще какие-нибудь варианты есть?

мне надо из одного multiple select выбрать и поместить в другой а после сделать POST в PHP
если делать как здесь
http://www.quirksmode.org/js/transfer.html
то я не смогу получить мультипл ;(
как мне передать массив из второго select?
 

Gas

может по одной?
В принципе верно все подсказал, только вот как то некрасиво ИМХО.
всем красиво, а тебе некрасиво, нормальный вариант.

А если использую _POST что делать?
так-же само именовать все нужные переменные: имя[]=значение

то я не смогу получить мультипл ;(
hint: делаешь имя select'а с квадратными скобками в конце и вуа-ля
 

Rammstein

PHPClub::News
А не проще взять готовое решение? Или обязательно этот велосипед без колёс?
 

yzoom

Новичок
> hint: делаешь имя select'а с квадратными скобками в конце и вуа-ля

в php нужны квадратные скобки чтобы получить массив select'a
а вот в javascript они не повзолят получить доступ к этому обьекту
вот это не работает:


function insert () {
if (document.ads.mysel1[].options.selectedIndex!=-1) {
var exist;
index = document.ads.mysel2[].length;
for ( i=0; i<index; i++ )
if ( document.ads.mysel2[].options.value == document.ads.mysel1[].options...

если убрать квадратные скобки то в жаваскрипте все работает а в php нет!

ads - имя формы
mysel1[] - multiple select 1
mysel2[] - multiple select 2
 

Gas

может по одной?
1. для таких случаев есть синтаксис document.ads['mysel2[]'].length;

2. мой hint был для варианта отправки формы без ajax'а (не внимательно прочитал тему). В твоём случае не парься с квадратными скобками в имени select'а, собирай массив _перед отправкой_ на сервер. Тебе всего-то в твоём примере нужно переопределить обработчик onSubmit не трогая остальной код.
 

yzoom

Новичок
Автор оригинала: Gas
1. для таких случаев есть синтаксис document.ads['mysel2[]'].length;

2. мой hint был для варианта отправки формы без ajax'а (не внимательно прочитал тему). В твоём случае не парься с квадратными скобками в имени select'а, собирай массив _перед отправкой_ на сервер. Тебе всего-то в твоём примере нужно переопределить обработчик onSubmit не трогая остальной код.
спасибо разобрался, такой синтаксис помог :rolleyes:
 
Сверху