Действие формы не работает со специальными символами (& amp;)

У меня есть форма бронирования и форма действия должна быть:
https://reservations.posthotel.com/smsworld/wc.dll?smsworld~availbox~
Но это не работает. Когда я отправляю форму, все от? просто игнорируется.

В качестве решения я назвал первое поле

имя = «smsworld ~ availbox ~&РАД»

Это ПОЧТИ работает, единственная проблема сейчас заключается в том, что когда я отправляю свою форму,&»переключается на% 26.

URL, который я должен получить:

https://reservations.posthotel.com/smsworld/wc.dll?smsworld~availbox~&РАУ = 10% 2F15% 2F2014&РДД = 10% 2F21% 2F2014&ночей = 3&RCA = 2

Но вместо этого я получаю:
https://reservations.posthotel.com/smsworld/wc.dll?smsworld~availbox~%26RAD=10%2F15%2F2014&РДД = 10% 2F21% 2F2014&ночей = 6&RCA = 2

Какие-либо предложения?

0

Решение

Используете ли вы GET или POST (атрибут метода в форме)? Если GET, URL в действии не может содержать параметры строки запроса. Попробуйте вместо этого использовать POST.

Я только что сделал для тебя скрипку, которая имеет две формы. Один использует GET (не работает), а другой использует POST (кажется, работает):

<form action="https://reservations.posthotel.com/smsworld/wc.dll?smsworld~availbox~" method="get">
<input type="submit" value="Submit GET" />
</form><form action="https://reservations.posthotel.com/smsworld/wc.dll?smsworld~availbox~" method="post">
<input type="submit" value="Submit POST" />
</form>

http://jsfiddle.net/n80e6Lzv/

1

Другие решения

То, что вы наблюдаете, — это кодирование URL. Некоторые символы в URL-адресах являются зарезервированными символами, так что вы не можете создавать части URL-адреса, содержащие этот символ, иначе URL-адрес будет неверно истолкован. Амперсанд является одним из тех персонажей.

Посмотрите, как выглядит URL со строкой запроса:

http://test.com?name1=value1&имя2 = значение2

Как вы, наверное, уже знаете, переменные строки запроса разделяются амперсандом. Кодировка URL заменяет группу символов зарезервированным символом, чтобы предотвратить неправильное толкование URL.

Другими словами, запрашиваемый вами URL невозможен. Ваши данные GET будут интерпретированы как:

$_GET = array(
'smsworld~availbox~' => '',
'RAD' => '10/15/2014',  //An additional index created by the unencoded ampersand
//etc...
);

Если это лишнее RAD Индекс был вашим реальным намерением, это невозможно. Вы должны использовать скрытые поля, чтобы добавить RAD в качестве дополнительной переменной строки запроса. Одно поле формы только для каждой переменной строки запроса.

1

спасибо за все ответы, но я нашел решение для этого, используя несколько строк JavaScript.

$ (‘. submit-btn’). on (‘click’, function (e) {

  var checkinDate = $('#checkAvailDate').val(),
guests = parseInt($'#checkAvailAdults').val()) + parseInt($('#checkAvailChildren').val());

var formAction = 'https://reservations.posthotel.com/smsworld/wc.dll?smsworld~availbox~&RAD=10%2F15%2F2014&nights=6&RCA=' + guests;

var win = window.open(formAction, '_blank');
win.focus();
e.preventDefault();

});

Я еще не закончил форматирование всех полей, но даже тогда, большое спасибо за помощь 🙂

0
По вопросам рекламы [email protected]