问题
我有一个html表单和一个perl cgi.pm脚本。
在文本字段中输入搜索。如果条目中有空格,则会切断任何其他参数(如选定的单选按钮)。例如,“hello world”,结果只有“hello”。
所以url的值是:query=hello
而不是query=hello+world&name=tag&name1=tag1...
。
perl脚本中的调用是:$search_key = param('query')
不包含空格或其后的任何内容。$search_key=仅限“你好”。
混乱
当我在本地主机上使用自己的web服务器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/之前,它什么也没做。我试过了,但它什么也没做,所以我知道空间没有那么远。此外,超链接工作正常(即整个URL:查询后打印所有名称值标记)。我试着增加文本的大小。
如果搜索结果是“hello+world”,它就会正常工作,所以问题是某些地方没有正确解释空间。
问题
问题是,当它来自表单时,或者当按钮被按下时,或者仅仅来自文本字段(或者cgi.pm中的某个地方)时,它会被截断。
这会是我这边的问题吗?我知道有有限的信息,但这一切都是不同的!你还想试试别的什么吗?
如果你还需要什么,请告诉我。
最佳答案
我认为问题出在你的中间页上,你打了折扣。
起作用的是multiwordsearch.cgi
,不起作用的是loading.cgi
。所以我假设loading.cgi
是中间页。
这肯定是造成问题的原因。我假设它正在获取参数,然后重定向到multiwordsearch.cgi
。这解释了为什么您发布到loading.cgi
的参数最终会出现在multiwordsearch.cgi
的查询字符串上。因此,在构建重定向URL时,它显然有一个bug。
所以我建议您查看loading.cgi
中的URL构建代码。如果你需要帮助,也可以贴在这里。
关于html - 参数值在第一个空格处截断(URL的其余部分消失了),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6601830/