Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.04.2019, 09:09
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Как передать функции разделитель полей?
Есть следующий код:

onchange="submitForm('csv_table', 'csv_table.cgi', this.value, 'file.csv', ';')"

и дальше
function submitForm(par1, par2, par3, par4, par5, par6) {
...
}


Доходит всё, кроме точки с запятой. Как я понимаю, она воспринимается программой как разделитель полей и поскольку за ней нет ничего - приходит "пусто".

Идеальным вообще был бы вариант, когда всё это можно было бы упаковать в массив, например, как это делается на Perl:
@args = ($a, $b, $c);
system @args;

И дальше уже не твоя забота экранировать значения.
Ответить с цитированием
  #2 (permalink)  
Старый 11.04.2019, 12:52
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

И точка с запятой доходит
<input onchange="submitForm('csv_table', 'csv_table.cgi', this.value, 'file.csv', ';')">
<script>
function submitForm(par1, par2, par3, par4, par5, par6) {
   alert(par5);
}
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 11.04.2019, 17:09
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Спасибо! Я понял, косяк где-то в этих строчках в function submitForm:

req.open('POST', par2, true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send("var1=" + par3 + "&var2=" + par4 + "&var3=" + par5 + "&var4=" + par6);


Когда у нас в параметре "par5" находится ";" (точка с запятой), то cgi скрипт на том конце трактует её как и "&" - как разделитель переданных значений, а не как значение.

Тогда вопрос: как скрипту передавать ";"?
Ответить с цитированием
  #4 (permalink)  
Старый 11.04.2019, 17:55
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Я сделал "костыли" и сейчас всё работает, но желательно бы как-то во всех этих параметрах "par + цифра" производить замену всех возможных "Percent-encoding reserved characters", а не только ";" на "%3B".

Может быть кто-то из гуру подскажет? А то у меня с Javascript дружба слабая.
Ответить с цитированием
  #5 (permalink)  
Старый 11.04.2019, 18:00
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Вы следуете использовать процентную кодировку для каждой части


Пишите
encodeURIComponent(par5)

вместо
par5
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запустить функцию из параметров функции? Untropee Общие вопросы Javascript 4 14.12.2016 15:03
Как передать данные из одинаковых форм php скрипту через AJAX? griga999 AJAX и COMET 22 10.10.2016 06:09
JS классы - как объединить функции в класс olga153b Events/DOM/Window 3 01.11.2011 14:13
Как передать onclick-функции значение value другого элемента sibbora Общие вопросы Javascript 3 30.10.2011 18:07
Как в браузерах реализуются функции DOM (например createElement) iamme Общие вопросы Javascript 7 02.09.2011 20:26