Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: из php в javascript
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » из php в javascript

Страниц (1): [1]
 

1. SAD - 18 Января, 2010 - 00:06:59 - перейти к сообщению
Такой вопрос, есть ли способ присвоить массив php массиву javascript.
2. vitaliy_mad - 18 Января, 2010 - 00:10:26 - перейти к сообщению
если числовой массив то так... текстовый надо предварительно обрабатывать
PHP:
скопировать код в буфер обмена
  1. echo '<script type="text/javascript">
  2. var arr=new Array('.implode(',',$phparr).');
  3. </script>
  4. ';
3. SAD - 18 Января, 2010 - 00:12:29 - перейти к сообщению
вот как раз массив не числовой, тогда как?
4. vitaliy_mad - 18 Января, 2010 - 00:19:20 - перейти к сообщению
каждый элемент обрамит кавычкой
PHP:
скопировать код в буфер обмена
  1. unset($tmp);
  2. foreach ($phparr as $dta) {
  3. $tmp[]='\''.$dta.'\'';
  4. }
  5. echo '<script type="text/javascript">
  6. var arr=new Array('.implode(',',$tmp).');
  7. </script>
  8. ';
5. SAD - 18 Января, 2010 - 01:38:13 - перейти к сообщению
спасибо, пригодилось все!
(Добавление)
А есть ли еще какой нибудь способ присваивания, чтобы не было прямого прописывания элементов массива? просто нельзя, чтобы эту часть кода было видно...
6. vitaliy_mad - 18 Января, 2010 - 03:55:55 - перейти к сообщению
нет... по одной причине... php исполняется на стороне сервера, а JS - на стороне клиента...
7. SAD - 18 Января, 2010 - 10:52:00 - перейти к сообщению
это я знаю... плохо, очень плохо
(Добавление)
а в цикле вбить не получиться?
8. EuGen - 18 Января, 2010 - 10:54:13 - перейти к сообщению
Попробуйте сделать так:
При помощи php динамически генерировать некоторый файл include.js - туда записывать массив с нужными элементами.
В требуемом шаблоне html просто подключать этот файл.
Этот бесхитростный прием, конечно, не защитит от сообразительных пользователей.
9. SAD - 18 Января, 2010 - 10:55:38 - перейти к сообщению
появилась проблема с массивами.
есть кусок кода
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. if(arr[aa]==gg) // проблема тут
  3.   count++;
  4.  
  5. ans_str.splice(0,0,otv[aa]);// и тут


в массивах arr и otv храниться больше 30 элементов(как они получены смотреть помощь vitaly_mad), массив ans_str набирает длину постепенно, aa - обычные целые числа,например,от 0 до 49(если,например,массив arr и otv длины 50).
вот после этого куска кода код дальше выполняться отказывается.
если его убрать, то все нормально.
(Добавление)
проблема все таки в том как получены массивы, т.к. массив чисел arr, я получил другим способом, и в первой строчке проблема пропадает. а вот во второй остается. в чем прикол, массив otv, я не могу получить другим способом.
10. valenok - 18 Января, 2010 - 13:07:57 - перейти к сообщению
Откройте консоль ошибок и посмотрите текст ошибки.
И как получены массивы на тоже не интересно. В крайнем случае - их содержание.
11. SAD - 18 Января, 2010 - 13:11:48 - перейти к сообщению
содержание otv
CODE (text):
скопировать код в буфер обмена
  1.   otv=new Array('Пирамиды','Прозерпина','Щука','Дельфины','Сестра','Европа','Тамтам','Скрипка','Глухота','Из нефронов','Ивановская','Отороченные мехом','Ижица','Верстовский','Микроклимат','''Черная смерть''','Компромисс','Клио','Птица','ВМФ','''Серпантин''','Доминиканская Республика','Чертями','Декабрь','Керн','Гребля','Наталья Николаевна','Бельгия','Чекушка','Пачули','Кудрявая','50 герц','Бусидо','Латышский','Якудза','Арак','Теннис','Минский','Индонезия','Веспасиан','Р. Киплинг','Ногу свело','Керлинг','Благовещенск','Кукушка','Орел','К струнным смычковым','День города','Гороховки','Владикавказ');

ошибка
CODE (text):
скопировать код в буфер обмена
  1. Ошибка: missing ) after argument list
  2. Источник: http://localhost/work/index.php
  3. Строка 562, символ 190
  4. Исходный код:
  5.   otv=new Array('Пирамиды','Прозерпина','Щука','Дельфины','Сестра','Европа','Тамтам','Скрипка','Глухота','Из нефронов','Ивановская','Отороченные мехом','Ижица','Верстовский','Микроклимат','''Черная смерть''','Компромисс','Клио','Птица','ВМФ','''Серпантин'


хотя она там есть
12. Мелкий - 18 Января, 2010 - 14:22:09 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. ,'''Серпантин''',

Скорей всего жалуется именно на тройные кавычки.
13. SAD - 18 Января, 2010 - 15:05:08 - перейти к сообщению
та врядли, там вообще не 3 кавычки, а
14. SAD - 19 Января, 2010 - 19:55:16 - перейти к сообщению
есть проблема в закодирование массива в JSON.
вот код

происходит вывод самого массива и его кодированого в JSON
CODE (htmlphp):
скопировать код в буфер обмена
  1. (
  2.     [0] => Array
  3.         (
  4.             [vopr] => Кто из этих американских президентов ''правил'' только один срок?
  5.             [yourans] => Клинтон
  6.             [rightans] => Буш
  7.         )
  8.  
  9.     [1] => Array
  10.         (
  11.             [vopr] => Кто такие были БЕРЕНДЕИ?
  12.             [yourans] => Скандинавское племя
  13.             [rightans] => Тюркское племя
  14.         )
  15.  
  16. )
  17. [{"vopr":"","yourans":"","rightans":""},{"vopr":"","yourans":"","rightans":""}]

В чем может быть проблема?
15. Ch_chov - 19 Января, 2010 - 20:23:22 - перейти к сообщению
Попробуй перекодировать файл в utf-8

На всякий случай отправляй заголовок
PHP:
скопировать код в буфер обмена
  1. header('Content-Type: application/json; charset=utf-8');

 

Powered by ExBB FM 1.0 RC1