【问题标题】:Is there a way to switch the '&' in a search query string to '+' or extend the query using multiple text boxes?有没有办法将搜索查询字符串中的“&”切换为“+”或使用多个文本框扩展查询?
【发布时间】:2011-10-25 21:54:07
【问题描述】:

使用 Craigslist 的示例:

<form action="/search/sss" id="searchform" method="get">
  <input id="query" name="query" value="car"> 
<select id="catAbb" name="catAbb">
 <option value="sss">all for sale / wanted                  
</select>
  <input type="radio" name="srchType" value="T">
  <input type="radio" name="srchType" value="A" checked="checked">
  <input name="minAsk" class="min" value="$1000">
  <input name="maxAsk" class="max" value="$5000">&nbsp;</td>
  <input type="checkbox" name="hasPic" value="1">
  <input type="submit" value="Search">      
</form>

此搜索字符串中的结果:

newyork.craigslist.org/search/sss?query=car&srchType=A&minAsk=$1000&maxAsk=$5000

任何将 & 符号“&”切换为“+”的方法,这样 url 就会变成这样:

newyork.craigslist.org/search/sss?query=car+srchType=A+minAsk=$1000+maxAsk=$5000

最好的例子是谷歌的高级搜索:

google.com/search?q=car+"new+car"+honda+OR+toyota+OR+vw+-old+site:autotrader.com+$1000..$5000

换句话说,有什么方法可以像 Google 那样操作搜索表单,使用多个输入框扩展查询,而不用 & 号分隔每个输入?

希望我说得通

【问题讨论】:

  • 为什么要这样做?换句话说,您希望实现什么目标?
  • 我应该忽略 Craigslist 的例子。请参阅 Google 高级搜索。当您键入时,您的信息会实时显示在框中,即使输入框有名称,即“as_q”、“as_qdr”等。它们只是查询“q”的扩展
  • 编辑了我的答案作为回复,您在寻找什么?

标签: javascript search query-string


【解决方案1】:

在javascript中:

var string = "newyork.craigslist.org/search/sss?query=car&srchType=A&minAsk=$1000&maxAsk=$5000"

var newstring = string.replace('&', '+');

//newstring = "newyork.craigslist.org/search/sss?query=car+srchType=A+minAsk=$1000+maxAsk=+5000"

【讨论】:

    【解决方案2】:

    我不确定你在说什么,但可以肯定——正则表达式可以用来交换字符。在javascript中它会是这样的:

    myUrl.replace(/\&/g,'+')
    

    【讨论】:

      【解决方案3】:

      当你有

      someurl?foo=1&bar=2
      

      在您的服务器环境中,您会得到一个数组

      foo => 1
      bar => 2
      

      谷歌做什么

      googleurl?q=1+2+3
      

      如果得到一个名为 q 的变量

      q => 1+2+3
      

      他们自己解析它。还有其他几个选项,例如mod rewrite,在我看来,它们可以为您提供更清晰的网址。

      但无论如何,这必须根据您的 javascript 生成,因为浏览器表单的默认行为不会那样工作。

      作为对您后期评论的回应,在 jQuery 中这看起来像

      $('form').submit(function(event) {
          event.preventDefault();
          var query = '';
          $(this).find('inpup, textarea, select').each(function() {
              query += '+'+$(this).val();
          });
          query = escape(query.substr(1));
      
          //debug
          alert(query);
      });
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      • 2019-03-15
      相关资源
      最近更新 更多