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 :: Версия для печати :: Как закодировать строку для передачи через GET
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Как закодировать строку для передачи через GET

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

1. mif - 02 Сентября, 2008 - 17:45:45 - перейти к сообщению
Я пытаюсь реализовать взаимодействие двух IE окон и сервера. Окна win1.php и win2.php. Первое окно вызывает второе:
CODE (text):
скопировать код в буфер обмена
  1.  var myVar = new Array();
  2. myVar = window.showModalDialog("win2.php?type=" + jsType + "&ID=".......

Потом во второе окно пользователь вводит данные. Эти данные опять же с помощью JS возвращаются в массив myVar.. вобщем до этого окна взаимодействуют на компьютере клиента...
А вот теперь у первого окна есть данные введенные клиентом, JS уже в win1 собирает их в GET строку, и отправляю на сервер:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. var getVar="win1.php?act=" + myVar["varWin2_1"] + "&name=" + myVar["varWin2_2"] + ..........;
  3. window.location.href = getVar;
  4.  

Это такой метод передачи данных между JS и PHP. location отправляю именно с первой страницы, чтобы она сразу и обновилась, и чтобы можно было гарантировать, что данные до сервера дошли обработались, и на обновленную win1.php будут выведены.

НО ТУТ Одна беда. Когда GET-строка формируется браузером из формы, то недопустимые символы внутри значений передаваемых переменных автоматом переводятся в шестнадцатеричный вид, а в моем случае ничего автоматом не переводится. Если пользователь использовал какой-нибудь "&" "+" "?" и т.д. то все пропало - данные доходят неполностью. Вот че делать? Как в JS до window.location спрятать запретные символы должным образом?

Или может я вобще не лучший путь передачи данных между окнами IE, и между JS и PHP выбрал? Но других на JS PHP пока ненарыл. Растерялся
(Добавление)
Кстати функция escape похожа на то, что мне нужно.. но вот знак "+" даже после нее до PHP не доходит. Может конечно не только "+" теряется.
2. mif - 02 Сентября, 2008 - 21:42:34 - перейти к сообщению
Частично решил.. но вот "+" так и не проходит.
Вот это:
CODE (text):
скопировать код в буфер обмена
  1. var getVar="win1.php?act=" + myVar["varWin2_1"] + "&name=" + myVar["varWin2_2"] + ..........;

Сделал вот так:
CODE (text):
скопировать код в буфер обмена
  1. var getVar="win1.php?act=" + escape(myVar["varWin2_1"]) + "&name=" + escape(myVar["varWin2_2"]) + ..........;

А уже на сервере конечно пришлось делать так: http://www[dot]sysman[dot]ru/index.php?showtopic=8855
Иначе кириллица выглядит немного непонятно.

Куда девается "+" я пока не понял.
3. _kT - 04 Сентября, 2008 - 16:48:56 - перейти к сообщению
я тут нашёл один алгоритм md5 на JS сделанный , щас через него передаю )) точно не будет лишних символов - тка фигово что назад не расшифровать и использовать его можно тока для првекри данные (например логин и пароля)
4. valenok - 04 Сентября, 2008 - 18:45:23 - перейти к сообщению
escape()
5. mif - 06 Сентября, 2008 - 21:55:53 - перейти к сообщению
valenok пишет:
escape()

Спасибо, но про escape() я уже и сам написал.. И про то, что символ "+" теряется при этом почему-то. Я надеялся, что можно будет обходиться без плюса без особого напряга, и тут же обнаружил.. что номера телефонов в международном формате содержат "+". Огорчение А у меня номера телефонов сотовых должны использоваться в системе sms-уведомлений. И номера нужны как-раз в международном формате. Придется дальше думать.
6. valenok - 06 Сентября, 2008 - 22:08:33 - перейти к сообщению
encodeURI()
encodeURIComponent()
escape()
7. mif - 08 Сентября, 2008 - 01:09:39 - перейти к сообщению
А вот ссылка с описанием функций: http://xhtml[dot]ru/2006/05/25/encodestring/
Из нее становится понятным, почему "+" у меня не проходил.

 

Powered by ExBB FM 1.0 RC1