1

我正在使用使用不同搜索方法的电子商务引擎脚本。

而不是像这样使用 GET 的 URL:

http://search.com/searchc?q=the+query

它用

http://search.com/searchc/the+query

我如何制作一个表单来 POST 或 GET 到那个,因为这个表单会生成 URL

http://search.com/searchc/?q=the+query


<form action="/searchc/" method="post">
    <input type="text" id="q" name="q">
    <input type="submit" value="go">
</form>

也试过这个(获取或发布对这两者都不起作用)

<form action="/searchc/" method="post">
    <input type="text" id="" name="">
    <input type="submit" value="go">
</form>
4

3 回答 3

1
<form action="/searchc/" method="post" onsubmit="this.action+=this.q.value;return true">
   <input type="text" id="q">
   <input type="submit" value="go">
</form>

空间将提交为 %20

您可以使用

this.action+=this.q.value.split(' ').join('+')

替换它们

于 2012-07-23T12:49:44.717 回答
1

可靠的方法有两个组件:客户端 JavaScript 操作,它根据需要将表单提交转换为请求,以及(作为非 JS 情况的备份)一个简单的服务器端重定向实用程序,它接收来自表单的请求并重定向它如修改。

像这样的东西(对于 GET 案例):

<form action="http://www.example.com/redirect"
  onsubmit="location.href = document.getElementById('f1').value + 
  document.getElementById('q').value; return false">
<input type="text" id="q" name="f2">
<input type="submit" value="go">
<input type=hidden id=f1 name=f1 value="http://search.com/search/">
</form>

这里http://www.example.com/redirect是一些服务器端表单处理程序,它只读取表单字段并选择名为 f1、f2、...的字段,将它们连接成一个字符串,并使用它作为重定向一个网址。作为 CGI 脚本,这将是

use CGI qw(:standard);
$dest = '';
$i = 1;
while(param('f'.$i)) {
   $dest .= param('f'.$i++); }
print "Location: $dest\n\n";
于 2012-07-23T13:48:20.797 回答
0

这是一个非常奇怪的 url 模式,但无论如何你可以这样做:

$(function () {
    $('form').submit(function () {
        var url = '/searchc/' + encodeURIComponent($(this).find('[name=q]').val());
        window.location = url;
        return false;
    });    
});
于 2012-07-23T12:59:57.063 回答