Подскажите как передать массив из php в яваскрипт
Подскажите как передать массив из php в яваскрипт
// сервер <? $cwet[0]= 0; $cwet[1]= 1; $str = implode(",", $cwet); ?> // клиент <script> <? include("SERVER.php"); ?> str = <? echo $str; ?>; document.write(str); </script> тут упрощенный вариант, выводим только строчку(str), но и она не правильно выводится, выводится только первый элемент массива. А вообще надо чтоб элементы массива были не числами а строками. |
например, так:
<script> var data = <?=json_encode($your_array);?>; console.log(data); </script> |
Цитата:
<script> var a = [1,2]; document.write(a); </script> |
Цитата:
str = 01; То есть число "1", а не строка. Чтоб была строка - поставь ковычки. Но это так, для сведения. Тебе уже подсказали как правильно "передавать" массив. |
Сами вы кОвычка. :) После $str = implode(",", $cwet); должно быть 0,1, строка. ТС запятую где-то посеял.
|
Цитата:
Ну или "двумерный" массив типа var arr=[['one',3],['two',254],['three',254],['five',3]]; который в php делается как обычно $arr[] = array($some_name, $some_number); |
Цитата:
alert(data .split(',')); и так cwet=[]; cwet= JSON.parse(data ); |
Харе тупить. В js у вас сразу, то есть мгновенно появляется нормальный массив. Берите и юзайте его.
|
Цитата:
Тогда вам его надо скомпилить в переменную. В случае который вы процитировали уже все скомпилено на этапе загрузки страницы. |
Вроде разобрался, теперь нужно с текстового файла file.tx содержащего информацию:
'#00FF30' (уже записано в файле file.txt) прочесть на сервере файл file.tx: <? $cwet= file('BAZA/cwetBaza.txt'); ?> Все читается и на клиент данные доходят, вот клиент <canvas id="canvas" width="800" height="600"></canvas> <script> VarCanvas = document.getElementById("canvas"); ctx = VarCanvas .getContext('2d'); <? include("SERVER.php"); ?> cwet= <?=json_encode($cwet);?>; ctx.fillStyle = cwet[0]; ctx.fillRect(100, 0, 100, 100); alert (cwet[0]); </script> Но квадрат не закрашивается, как сделать чтоб закрасился? |
Цитата:
|
У тя на выходе будет data = [1,2] че те еще нужно????
|
Цитата:
Почему элементарное приходится объяснять? Вот кусок рабочего кода echo '<script type="text/javascript"> var row_id_name="',$tb->js_row_id_name,'"; var datagrid_id="',$tb->table_id,'"; var columns=',json_encode($js),'; </script>'; Вот в браузере подключенный через link (наверно) скрипт юзает скрипт полученный с сервера вместе с хтемелей var type = columns[field_index][1]; Еще раз скажете "нипонял" поставлю минус. :) |
Просто посмотрите в хтмле как получился ваш массив и сразу все станет понятно. Надеюсь. И вообще в процессе полезно заглядывать в хтмл, потому что пхпе положить на ошибки в хтмл, а браузеру в общем-то тоже. Только красный цвет в кодах покажет где накосячил ваш пхп.
|
Вспомнил, была недавно похожая коллизия. Мне надо было записать уже отрендеренный урл в датасет ссылки на картинку - чтобы заголовок этой картинки сделать ссылкой на товар. Оказалось если просто всунуть <a href=""> в дата-сет, который сам начинается с " то барахло вылезает на страницу как халявный мозг из соломенной башки Страшилы.
Сперва я потратил время чтобы заменить все ' на \' и добился результата. Потом подумал что надо было попробовать http://ru2.php.net/htmlentities и попробовал. Хлам исчез. Было полез думать как теперь в JS из ентитек сделать нормальный html но недолез - щелкнул по ссылке и она открылась. Задумалсо: почему все эти <a href="http:... попадая в innerHTML спана спокойно превращаются в ссылку. title.innerHTML='Фото '+(index+1)+' из '+images_length+': '+this.dataset.link; // это оно Так и не понял. |
Часовой пояс GMT +3, время: 12:47. |