Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.03.2014, 15:50
Профессор
Отправить личное сообщение для wadim Посмотреть профиль Найти все сообщения от wadim
 
Регистрация: 20.01.2014
Сообщений: 150

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

// сервер
<?

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

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

?>


// клиент
<script>

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

str = <? echo $str; ?>;

document.write(str);

</script>

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

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

Последний раз редактировалось wadim, 06.03.2014 в 15:55.
Ответить с цитированием
  #2 (permalink)  
Старый 06.03.2014, 16:07
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

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

console.log(data);
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 06.03.2014, 16:08
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от wadim
str = <? echo $str; ?>;
document.write(str);
Как вариант, делай нечто такое

<script>
var a = [1,2];
document.write(a);
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 06.03.2014, 16:11
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от wadim
str = <? echo $str; ?>;
В результате получится
str = 01;
То есть число "1", а не строка. Чтоб была строка - поставь ковычки. Но это так, для сведения. Тебе уже подсказали как правильно "передавать" массив.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 06.03.2014, 16:21
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сами вы кОвычка. После $str = implode(",", $cwet); должно быть 0,1, строка. ТС запятую где-то посеял.
Ответить с цитированием
  #6 (permalink)  
Старый 06.03.2014, 16:27
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от wadim
А вообще надо чтоб элементы массива были не числами а строками.
Это значит потребуется либо объект, либо массив объектов. Это по месту.

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

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


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

$arr[] = array($some_name, $some_number);
Ответить с цитированием
  #7 (permalink)  
Старый 06.03.2014, 16:34
Профессор
Отправить личное сообщение для wadim Посмотреть профиль Найти все сообщения от wadim
 
Регистрация: 20.01.2014
Сообщений: 150

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

console.log(data);
</script>
спасибо, а как теперь строку записать в массив, пробовал так

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

и так
cwet=[];
cwet= JSON.parse(data );
Ответить с цитированием
  #8 (permalink)  
Старый 06.03.2014, 16:41
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Харе тупить. В js у вас сразу, то есть мгновенно появляется нормальный массив. Берите и юзайте его.
Ответить с цитированием
  #9 (permalink)  
Старый 06.03.2014, 16:42
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от wadim
cwet= JSON.parse(data );
Это если массив пришел как текст с сервера без идентификатора в уже загруженную страницу (аяксом).

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

В случае который вы процитировали уже все скомпилено на этапе загрузки страницы.
Ответить с цитированием
  #10 (permalink)  
Старый 06.03.2014, 16:48
Профессор
Отправить личное сообщение для wadim Посмотреть профиль Найти все сообщения от wadim
 
Регистрация: 20.01.2014
Сообщений: 150

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

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

Последний раз редактировалось wadim, 06.03.2014 в 20:07.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как c функцией .ajax() передать несколько значений в php? Faab jQuery 11 19.11.2013 12:03
Как передать переменную с jquery в php Максим2 jQuery 14 28.07.2013 11:38
как передать массив из php в javascript ynijar Javascript под браузер 4 13.02.2013 15:37
есть переменная javascript надо передать ее в php как это сделать arahmanov Общие вопросы Javascript 5 08.08.2011 16:26
Как передать переменную php в javascript Amateur Javascript под браузер 4 13.07.2011 16:57