问题
我有一个 html 表单和一个 perl cgi.pm 脚本。
在文本字段中输入搜索。如果条目中有空格,则任何其他参数(如选定的单选按钮)都会被截断。前任。 'hello world',结果仅 'hello'。
所以 url 的值为:query=hello
而不是 query=hello+world&name=tag&name1=tag1...
.
perl 脚本中的调用是:$search_key = param('query')
不包含空格或后面的任何内容。 $search_key = 仅“你好”。
困惑
当我在本地主机上使用我自己的网络服务器 apache 时,它工作正常。但是当试图把它放到网上时,问题就出现了。代码中的唯一区别是:(1)perl 脚本中的 url 超链接 - search2011.cgi
与 multwordsearch.cgi
(不是问题),(2) 中间加载页面 - loading.cgi
, 以及 (3) HTML 代码中“action=”调用中的 url:
工作:
<form name="search_option" action="http://localhost/cgi-bin/multiwordsearch.cgi" method="get" onSubmit="return checkform(this);">
对比
非工作:
<form name="search_option" action="/cgi-bin/loading.cgi" method="post" onSubmit="return checkform(this);">
<h2><font color=forestgreen>Biomimetic Search</font></h2>
<input type="text" name="query" size="40" />
另外 尽管有“POST”,它仍然显示 query=hello
!
我试过 http... 在/cgi-bin/之前,它什么也没做。我试过 $search_key =~ s/ /+/
但它没有做任何事情,所以我知道空间不会那么远。此外,超链接工作正常(即整个 URL:查询后打印所有名称-值标签)。我试过增加文本的大小。
如果搜索是“hello+world”,它会正常工作,所以问题是没有正确解释空格。
问题
问题是它在来自表单时被截断,无论是在按下按钮时,还是仅来自文本字段(或 cgi.pm 中的某处)。
这对我来说是个问题吗?我知道信息有限,但这就是不同的!有什么其他尝试的想法吗?
如果您还需要什么,请告诉我。
最佳答案
我认为问题出在您打折的中间页面。
有效的是 multiwordsearch.cgi
,无效的是 loading.cgi
。所以我假设 loading.cgi
是中间页面。
这肯定是导致问题的原因。我假设它正在获取参数,然后重定向到 multiwordsearch.cgi
。这解释了为什么您向 loading.cgi
发送的参数以 multiwordsearch.cgi
的查询字符串结尾。所以它在构建重定向 URL 时显然存在错误。
所以我建议你看看loading.cgi
中的URL构建代码。如果您需要帮助,也可以在此处发布。
关于html - 参数值在第一个空格处被截断(URL 的其余部分消失),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6601830/