Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передача массива из PHP в JS. (https://javascript.ru/forum/misc/65154-peredacha-massiva-iz-php-v-js.html)

St. 30.09.2016 13:57

Уважаемые, спасибо.
Получилось вот так (php):
$massiv = array('Текст 0', 'Текст 1', 234, 546);
$encodemassiv = rawurlencode(json_encode($massiv));
echo '<form action="' . $url . '" method="post" name="FormRegistration" onsubmit="return RegistrationValid(\'' . $encodemassiv . '\');">';


Функция на js:
function RegistrationValid(encodemassiv)
{
massivjs = JSON.parse(decodeURIComponent(encodemassiv))
alert(massivjs[0]);
alert(massivjs[1]);
alert(massivjs[2]);
alert(massivjs[3]);
}


warren buffet.
Цитата:

Сейчас это можно сделать через атрибут поля pattern. Более того, есть встроенная в браузеры валидация, но там как-то туманно все.
Кто такие pattern? У вас есть справочная информация о них (можно с примерами)?

laimas 30.09.2016 14:24

Цитата:

Сообщение от St.
Получилось вот так

Вы так и не поняли в чем собственно проблема. Если у вас РНР не ниже версии 5.4, то уберем юникод из JSON.

$json = json_encode(['Текст 0', 'Текст 1', 234, 546], JSON_UNESCAPED_UNICODE);
//результат будет такой
//["Текст 0","Текст 1",234,546]
//вставляем как есть в вывод
echo '<button onclick=\'myF(' . $json . ')\'>GO</button>';


Если это просмотреть в отладчике, то html будет таким

<button onclick="myF(["Текст 0","Текст 1",234,546])">GO</button>

Скопируйте в отладчике (в Опере выберите Инструменты разработчика) и получите

<button onclick="myF([&quot;Текст 0&quot;,&quot;Текст 1&quot;,234,546])">GO</button>

Другими словами в нативном обработчике для передачи в функцию уже прописан массив, а в функции сразу обращаемся к его элементам.

function myF(d) {
    alert(d[1])
}




О новых возможностях форм можно почитать здесь и здесь.

warren buffet 30.09.2016 14:42

Цитата:

Сообщение от St.
rawurlencode

Это зачем? У тебя вообще php в UTF-8 или в какой-нить анзи-шманзи вин-1251? json_encode() работает только с юникодом нормально.

warren buffet 30.09.2016 14:44

Цитата:

Сообщение от St.
У вас есть справочная информация о них


У меня все есть http://www.html5pattern.com/


Судя по тому, что тебе двое человек три страницы не смогли вталдычить самое элементарное, боюсь лучше не мучиться с паттернами и объектными валидаторами. Продолжай как смошешь.

laimas 30.09.2016 14:48

Цитата:

Сообщение от warren buffet
Это зачем? У тебя вообще php в UTF-8 или в какой-нить анзи-шманзи вин-1251?

rawurlencode, это URL-кодирование строки согласно RFC 3986 и к какой либо кодировке не привязана.

warren buffet 30.09.2016 15:02

json_encode все сам делает, стопудово. Я передаю кириллицу им и любой юникод в жабу скрипучую. Само собой надо посылать заголовок насчет кодировки, но это как бы мастхав.

laimas 30.09.2016 15:30

Цитата:

Сообщение от laimas
json_encode все сам делает, стопудово.

Значит и ты ничего не понимаешь.

St. 30.09.2016 16:03

laimas.
В отладчике смотрел, получилось...
Спасибо.

П.С.
Хух...
pattern посмотрю завтра.

laimas 30.09.2016 16:07

St.,
обязательно нужно знать это, а знание формата данных, в данном случае JSON, передачи аргументов в js-функции (и не только в них), уже на этапе написания этого кода даст представление конечного результата. Не надо действовать наобум - я привел пример с кодированием, а вы его сразу ..., а ведь в данном случае это лишнее. ) Это нужно будет для очень "тяжелых" случаев.

St. 30.09.2016 20:41

Спасибо за:
Сумасшедшие формы (что нового в <form>)
Автоматическая проверка форм (pattern)
Определение строк в PHP (одинарные кавычки, двойные кавычки и др.)


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