2014-10-08 18 views
0

我有一個預訂表單和表單操作應該是: https://reservations.posthotel.com/smsworld/wc.dll?smsworld~availbox~ 但它不工作。當我提交表格時,一切從?被忽略。表格操作無法使用特殊字符(&)

作爲一個解決方案,我命名的第一個字段作爲

名= 「smsworld〜availbox〜& RAD」

這幾乎是工作,唯一的問題是現在,當我提出我的形式,「&」正在由%26切換。

,我應該得到的網址是:

https://reservations.posthotel.com/smsworld/wc.dll?smsworld~availbox~&RAD=10%2F15%2F2014&RDD=10%2F21%2F2014&nights=3&RCA=2

而是我越來越: https://reservations.posthotel.com/smsworld/wc.dll?smsworld~availbox~%26RAD=10%2F15%2F2014&RDD=10%2F21%2F2014&nights=6&RCA=2

有什麼建議?

回答

0

感謝所有的答覆,但我找到了一個使用幾行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(); 

});

我不格式化所有字段沒有完成,但即使是這樣,非常感謝所有幫助:)

1

您是使用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&name2=value2

正如你可能已經知道,查詢字符串變量由&符號分隔。 URL編碼將一組字符替換爲保留字符,以防止對URL的錯誤解釋。

換句話說,你要求的URL是不可能的。您GET數據將被解釋爲:

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

如果額外RAD指數是你的真實意圖,這是不可能這樣。您應該使用隱藏字段來將RAD作爲附加查詢字符串變量添加。僅用於每個查詢字符串變量的一個表單字段。