我有两个页面,每个页面都有一个form
。像这样的东西:
// index.php
<form name="SampleForm" method="get" action="search.php">
<input id="q" name="q" type="text"/> // text field
<input name="" type="submit" /> // button
</form>
// search.php
<form name="SampleForm" method="get" action="">
<input id="q" name="q" type="text"/> // text field
<input name="" type="submit" /> // button
</form>
现在,当我提交index.php
时,网址是这样的:
www.example.com/search.php?q=foo+bar
但是当我提交search.php
时,网址就是这样的:
www.example.com/search.php?q=foo%20bar
为什么?我该如何解决? (我只想+
)
修改
index.php
到search.php
不是ajax,search.php
到search.php
是ajax。这是真的,将+
更改为%20
的原因是重定向。那么,我是否可以在重定向的网页中从%20
转换为+
?
答案 0 :(得分:1)
我不明白为什么search.php中的表单会生成包含resutl.php的URL,因为未指定该操作。
我发现这种情况的唯一方法是,如果search.php中包含构建重定向网址的代码,并且该代码使用%20编码格式。
看看search.php如何最终重定向到resutl.php。答案就在那里。
<强>更新强>
根据评论,您似乎是通过Ajax访问此URL。查看为Ajax调用形成URL的位置。
答案 1 :(得分:1)
嗯,默认情况下,网络表单会使用+作为GET表单。
区别在于index.php
您直接将数据发送到result.php
,因此浏览器会将其显示为+
但是在search.php中,结果首先发给search.php(因为动作是“”),然后我猜你正在重定向到result.php
。这个额外的重定向是将+转换为%20
最后,它们都是等价的 - 你使用哪一个并不重要。
答案 2 :(得分:1)
这两种编码形式是等价的。较旧的RFC标准定义该空间应编码为加号&#34; +&#34;,较新的RFC标准定义为使用百分比编码和十六进制ASCII值。
所有互联网客户,搜索引擎,蜘蛛等都知道如何处理它。