Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подскажите как передать массив из php в яваскрипт (https://javascript.ru/forum/misc/45576-podskazhite-kak-peredat-massiv-iz-php-v-yavaskript.html)

wadim 06.03.2014 15:50

Подскажите как передать массив из php в яваскрипт
 
Подскажите как передать массив из php в яваскрипт

// сервер
<?

$cwet[0]= 0;
$cwet[1]= 1;

$str = implode(",", $cwet);

?>


// клиент
<script>

<? include("SERVER.php"); ?>

str = <? echo $str; ?>;

document.write(str);

</script>

тут упрощенный вариант, выводим только строчку(str), но и она не правильно выводится, выводится только первый элемент массива.

А вообще надо чтоб элементы массива были не числами а строками.

deivan 06.03.2014 16:07

например, так:
<script>
var data = <?=json_encode($your_array);?>;

console.log(data);
</script>

ksa 06.03.2014 16:08

Цитата:

Сообщение от wadim
str = <? echo $str; ?>;
document.write(str);

Как вариант, делай нечто такое

<script>
var a = [1,2];
document.write(a);
</script>

danik.js 06.03.2014 16:11

Цитата:

Сообщение от wadim
str = <? echo $str; ?>;

В результате получится
str = 01;
То есть число "1", а не строка. Чтоб была строка - поставь ковычки. Но это так, для сведения. Тебе уже подсказали как правильно "передавать" массив.

kostyanet 06.03.2014 16:21

Сами вы кОвычка. :) После $str = implode(",", $cwet); должно быть 0,1, строка. ТС запятую где-то посеял.

kostyanet 06.03.2014 16:27

Цитата:

Сообщение от wadim
А вообще надо чтоб элементы массива были не числами а строками.

Это значит потребуется либо объект, либо массив объектов. Это по месту.

Ну или "двумерный" массив типа

var arr=[['one',3],['two',254],['three',254],['five',3]];


который в php делается как обычно

$arr[] = array($some_name, $some_number);

wadim 06.03.2014 16:34

Цитата:

Сообщение от deivan (Сообщение 301440)
например, так:
<script>
var data = <?=json_encode($your_array);?>;

console.log(data);
</script>

спасибо, а как теперь строку записать в массив, пробовал так

alert(data .split(','));

и так
cwet=[];
cwet= JSON.parse(data );

kostyanet 06.03.2014 16:41

Харе тупить. В js у вас сразу, то есть мгновенно появляется нормальный массив. Берите и юзайте его.

kostyanet 06.03.2014 16:42

Цитата:

Сообщение от wadim
cwet= JSON.parse(data );

Это если массив пришел как текст с сервера без идентификатора в уже загруженную страницу (аяксом).

Тогда вам его надо скомпилить в переменную.

В случае который вы процитировали уже все скомпилено на этапе загрузки страницы.

wadim 06.03.2014 16:48

Вроде разобрался, теперь нужно с текстового файла 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>

Но квадрат не закрашивается, как сделать чтоб закрасился?


Часовой пояс GMT +3, время: 20:58.