2012-04-11 7 views
1

У меня есть php, что echos html. Внутри одного из этих эхо-сигналов у меня есть кнопка, которая вызывает функцию javascript. Внутри этого вызова я передаю переменную php. Однако, когда я вижу, что значение одного из элементов находится внутри javascript, я получаю undefined.Передача php массива на javascript

Любые идеи?

Javascript

function addrow(innerid, teams){ 


    alert(teams[1]);} 

Вот как я прохожу его, это все внутри эхо

<input type = "button" id = '.$buttonid.' value = "Agregar" onclick = "addrow(\'' . $leaguesarray[$numofleagues] . '\','.$teamsarray.') 

Так я называю addrow (со значением лиги, и я также передать teamsarray массив от PHP

я решил попробовать что-то другое, но я не получаю его работать правильно.

Любые предложения?

echo '<script language="javascript">'; 


for ($size = 0; $size < sizeof($teamsarray);$size++){ 

    echo "var teamsarray[".$size."] = ".$teamsarray[$size].";\n"; 


    } 

echo 'function addrow(innerid, size){ 


for (var i = 0;i< size; i++){ 

html = html + "<option value = " + teamsarray[i] + ">"+teamsarray[i]+"</option>"; 


    } 

html = html +"</select>"; 
}</script>'; 

В основном то, что я пытаюсь сделать, это эхо javascript через php. Я пытаюсь создать раскрывающийся список со значениями, которые я получаю от php. Который будет добавлен динамически с помощью функции addrow.

+0

Покажите нам сгенерированную разметку. –

+0

Строковое представление массивов по умолчанию массива '' Array '', я не думаю, что вы этого хотите. –

+1

Возможный дубликат [pass php array to javascript function] (http://stackoverflow.com/questions/4885737/pass-php-array-to-javascript-function) –

ответ

1

Это звучит, как вы могли бы искать json_encode, так что вы могли бы сделать что-то вроде этого:

if (empty($teamsarray)) $teamsarray = array(); 
echo '<input type = "button" id = '.$buttonid.' value = "Agregar" onclick = "addrow(\'' . $leaguesarray[$numofleagues] . '\','.json_encode($teamsarray).'); return false;" />'; 
+0

Я использовал json_encode, однако javascript по-прежнему дает мне неопределенное значение для значение – user541597

+0

Хм, ну неопределенное странно, поскольку код, который я предложил, явно определяет значение, если оно не определено. Можете ли вы предоставить jsfiddle, чтобы мы могли взглянуть? Если так, я мог бы исправить это в сердце. –

0

В JavaScript массивы выглядеть следующим образом: [2,4,6]. Здесь может помочь команда php implode.

$buttonid = 42; 
    $leaguesarray[$numofleagues] = 66; 
    $teamsarray = array(2,4,6); 

    $teams = implode(',',$teamsarray); 

    $input = <<<EOT 
<input type="button" id="$buttonid" value="Agregar" onclick="addrow($leaguesarray[$numofleagues],[$teams])" /> 
EOT; 
    echo $input . "\n"; 

Урожайность:

<input type="button" id="42" value="Agregar" onclick="addrow(66,[2,4,6])" /> 

который я думаю, что вы хотите.

Редакцией:

@Dustin Grahams предложение использовать json_encode хороший один. Заменить взрыв с помощью:

$teams = json_encode($teamsarray); 

И отбросьте дополнительные скобки из шаблона.

+0

спасибо за ответ. Однако я использовал json_encode и передал его с помощью функции addrow. мой javascript выглядит как команды addrow (что-то, команды) - это мой массив. Однако я не знаю. – user541597

+0

Итак, я попробовал свой метод. У меня есть teamarray, который содержит «5a7» 8 и т. Д. Затем я сделал $ teams = implode (',', $ teamsarray); и передал его как $ команды, однако, когда я получаю значения, элементы внутри массива заклинания массива. – user541597

+0

Как уже было сказано, разместите фактический html, который вы создали. Ваш опубликованный код очень запутан, и сложно понять, что именно происходит. – Cerad

Смежные вопросы