Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.09.2016, 10:38
St. St. вне форума
Аспирант
Отправить личное сообщение для St. Посмотреть профиль Найти все сообщения от St.
 
Регистрация: 15.04.2016
Сообщений: 53

Передача массива из PHP в JS.
Если передать переменную можно так
То как передать массив?

Делаю так:
$abcd = array('Массив 0', 1, 2);
echo '<form action="' . $url . '" method="post" name="FormRegistration" onsubmit="return RegistrationValid(\'' . $abcd . '\');">';

alert выдает: array

Помогите сделать это правильно.
Ответить с цитированием
  #2 (permalink)  
Старый 30.09.2016, 10:58
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

json_encode()
Ответить с цитированием
  #3 (permalink)  
Старый 30.09.2016, 11:03
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

И вообще ты все неправильно делаешь. Валидация относится не к форме, а к полям формы. Чтобы написать более-менее абстрактный валидатор, тебе надо в поля записывать правила их проверки. Сейчас это можно сделать через атрибут поля pattern. Более того, есть встроенная в браузеры валидация, но там как-то туманно все.

Потому что формой регистрации твоя задумка не ограничится. Где регистрация, там и смена пароля, редактирование профиля и все такое и повсюду нужна валидация. Ты на каждую форму будешь писать ее личный валидатор?
Ответить с цитированием
  #4 (permalink)  
Старый 30.09.2016, 11:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Можно так:
$abcd = json_encode(array('Массив 0', 1, 2));
echo "<form action=\"$url\" method=\"post\" name=\"FormRegistration\" onsubmit='return RegistrationValid($abcd )'>";


onsubmit="function_name();" - одно выражение, значит и точка с запятой в общем то не нужна.

Но если судить по передать переменную можно так, а теперь как впихнуть массив, то это наводит на мысль, что вы что-то не так делаете.
Ответить с цитированием
  #5 (permalink)  
Старый 30.09.2016, 11:08
St. St. вне форума
Аспирант
Отправить личное сообщение для St. Посмотреть профиль Найти все сообщения от St.
 
Регистрация: 15.04.2016
Сообщений: 53

Спасибо warren buffet.

Делаю так:
$abcd = array(1,2,3);
$abcd = json_encode($abcd);
echo '<form action="' . $url . '" method="post" name="FormRegistration" onsubmit="return RegistrationValid(\'' . $abcd . '\');">';


В js делаю так:
massiv = JSON.parse(abcd);
alert(massiv[0]);

Работает.

А как передать такой массив?
$abcd = array('1','2','3');


addslashes - не помогает...

Последний раз редактировалось St., 30.09.2016 в 11:11.
Ответить с цитированием
  #6 (permalink)  
Старый 30.09.2016, 11:09
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Например на сайте может быть открыто одновременно считай сколько форм:

Профиль
Перезвонить
Фидбэк
Быстрая покупка
Оформление корзины

И на все эти формы придется писать свою тряхомудию, и когда ты напишешь на две, уже увидишь, что коды одинаковые. Выдавишь их в функции для реюза и увидишь, что их надо собирать в объект. Короче жизнь все равно заставит. Так что лучше не жди ее пинков. )))
Ответить с цитированием
  #7 (permalink)  
Старый 30.09.2016, 11:11
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от St.
В js делаю так:
В js уже объект, браузер его сам отпарсил и скомпилил, поскольку текст в хтмле.
Ответить с цитированием
  #8 (permalink)  
Старый 30.09.2016, 11:12
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Просто у функции RegistrationValid должен быть параметр

function RegistrationValid(params){

/* Все что json_encode() отпостил, и будет в params*/

}


PS Может быть будет не объект, а массив. Если ключей нет, то есть когда они континуально индексные, json_encode() кажется делает массив, почитай документацию.
Ответить с цитированием
  #9 (permalink)  
Старый 30.09.2016, 11:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от St.
А как передать такой массив?
$abcd = array('1','2','3');
Я вам для чего писал пример? Обратите внимание на кавычки в строке. Почему так? Все потому, что в JSON строки заключаются в двойные кавычки. То что я написал даже не потребует JSON.parse на клиенте. А почему - ответ можно найти если щелкнуть F12 и заглянуть в отладчик.
Ответить с цитированием
  #10 (permalink)  
Старый 30.09.2016, 11:19
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от laimas
а теперь как впихнуть массив
А как ты сделаешь 5 объектов для 5 форм без передачи параметров в объекты, хотя бы таких как id формы, редактируемая она или нет, плавает или пофиксена, нужно ли напоминать о несохраненных данных или пофигу? Откуда взять все эти параметры? В атрибуты распихивать? Ну распихивай.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача значение атрибута name в php по клику Tegev AJAX и COMET 5 06.05.2016 12:30
Как подключить данные с PHP по средствам JS на удаленный сервер. Nyam Элементы интерфейса 13 11.04.2014 17:14
Как вывести содержимое PHP файла с помощью JS? pavdin Серверные языки и технологии 6 22.12.2010 14:16
Не получается передать переменную из JS в PHP Lion_astana AJAX и COMET 2 23.11.2010 17:23
Суперглобальные PHP увидеть в JS Robox Общие вопросы Javascript 4 10.06.2010 15:49