2015-08-20 4 views
0

Я построил динамический список из массива и должен распечатать встроенное событие onclick, но я не знаю, как это сделать другим способом.Как передать массив JavaScript в вызов встроенной функции, сгенерированный PHP

<?php 

$dataArray = $_POST['dataArray']; // This is a valid array 

ECHO '<div id="colorSelectorBox">'; 

for ($btn = 0; $btn < sizeof($dataArray); $btn++){ 
    ECHO '<div class="btn-group"> 
       <button onclick="buildGroupList("'.$dataArray.'")">' .$dataArray[$btn].'</button> 
       <button><div ..Stuff..></div></button> 
      </div><br>'; 
} 
ECHO '</div>'; 

?> 

Проблема заключается в том, что функция JavaScript buildGroupList() не получает массив из этого вместо линия выглядит в моем средстве разработки:

onclick="buildGroupList(Array)" 

Как я могу передать массив значений через JavaScript?

ИЛИ

Как я могу переписать это так, что вызов не встраивать?

+0

Я не понимаю. Где это будет? –

ответ

2

Поскольку вы пытаетесь напечатать массив так, как если бы он автоматически преобразовывался в массив javascript, то есть строку его значений, разделенную запятой (это то, что ему нужно выводить на html, что-то, что понимает браузер) ,

Для этого вам необходимо implode:

строка лопаются (строка $ клей, массив $ штук)

Объединяет элементы массива в строку $ клеем.

ECHO "<div class=\"btn-group\"> 
    <button onclick=\"buildGroupList(['".implode("','",$dataArray)."'])\">" .$dataArray[$btn]."</button> 
     <button><div ..Stuff..></div></button> 
    </div><br>"; 

Он принимает каждый элемент массива и помещает $ клеевой строку между каждым из них. Конечный результат выглядит следующим образом:

//let's assume this is your array in PHP 
<?php 
    $dataArray = array('one','two','three'); 
?> 

<!-- then your HTML looks like this --> 
<button onclick="buildGroupList(['one','two','three'])">...</button> 

Помните, что PHP и Javascript не знают друг друга.

+0

Не работает. Функция JavaScript принимает в качестве своего параметра массив, а не список разделенных запятыми строк. –

+0

Извините, я отредактировал, чтобы уточнить. –

+0

Спасибо, у меня все еще есть проблемы, но это может быть проблемой с одиночными и двойными кавычками. –

3

Самый короткий ответ: используйте json_encode(), который преобразует массив в строку json, но в любом случае это не очень хорошая практика.

+0

Мне сложно преобразовать результат в массив, когда он находится в JS –