我有一个预订表格,表格行动应该是: https://reservations.posthotel.com/smsworld/wc.dll?smsworld~availbox~ 但它不起作用。当我提交表格时,一切都从?只是被忽略了。
作为解决方案,我将第一个字段命名为
名=" smsworld〜availbox〜&安培; RAD"
它几乎正常工作,现在唯一的问题是,当我提交表单时,"&"正在被%26切换。
我应该得到的网址是:
有什么建议吗?
答案 0 :(得分: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>
答案 1 :(得分:1)
您正在观察的是URL编码。 URL中的某些字符是保留字符,这样您就无法创建包含该字符的URL部分,否则URL将被误解。 &符号是其中一个角色。
考虑带有查询字符串的URL是什么样的:
http://test.com?name1=value1&name2=value2
您可能已经知道,查询字符串变量由&符号分隔。 URL编码将一组字符替换为保留字符,以防止误解URL。
换句话说,您要求的网址是不可能的。您的GET数据将被解释为:
$_GET = array(
'smsworld~availbox~' => '',
'RAD' => '10/15/2014', //An additional index created by the unencoded ampersand
//etc...
);
如果额外的RAD
索引是您的实际意图,那么这是不可能的。您应该使用隐藏字段来添加RAD
作为附加查询字符串变量。仅用于每个查询字符串变量的一个表单字段。
答案 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();
});
我还没有格式化所有字段,但即便如此,非常感谢您的帮助:)