Как передать функции разделитель полей?
Есть следующий код:
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; И дальше уже не твоя забота экранировать значения. |
И точка с запятой доходит:)
<input onchange="submitForm('csv_table', 'csv_table.cgi', this.value, 'file.csv', ';')"> <script> function submitForm(par1, par2, par3, par4, par5, par6) { alert(par5); } </script> |
Спасибо! Я понял, косяк где-то в этих строчках в 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 скрипт на том конце трактует её как и "&" - как разделитель переданных значений, а не как значение. Тогда вопрос: как скрипту передавать ";"? |
Я сделал "костыли" и сейчас всё работает, но желательно бы как-то во всех этих параметрах "par + цифра" производить замену всех возможных "Percent-encoding reserved characters", а не только ";" на "%3B".
Может быть кто-то из гуру подскажет? А то у меня с Javascript дружба слабая. |
Вы следуете использовать процентную кодировку для каждой части
Пишите encodeURIComponent(par5) вместо par5 |
Часовой пояс GMT +3, время: 08:00. |