Есть ли способ поменять '&' в строке поискового запроса на '+' или расширить запрос, используя несколько текстовых полей? - PullRequest
0 голосов
/ 25 октября 2011

Пример использования 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:

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

Другими словами, любой способ манипулирования формой поиска, такой как Google, расширяет запрос.использование нескольких полей ввода без амперсанда, разделяющего каждый вход?

Надеюсь, у меня есть смысл

Ответы [ 3 ]

0 голосов
/ 25 октября 2011

Я не уверен, к чему вы клоните, но уверен - регулярные выражения могут использоваться для замены символов. В JavaScript это будет примерно так:

myUrl.replace(/\&/g,'+')
0 голосов
/ 25 октября 2011

Если в вашей серверной среде есть

someurl?foo=1&bar=2

, вы получаете массив с

foo => 1
bar => 2

Что Google делает с

googleurl?q=1+2+3

при получении одной переменнойпо имени q

q => 1+2+3

И они разбирают это сами.Есть несколько других опций, таких как mod rewrite , которые, по моему мнению, дают вам более чистые URL.

Но в любом случае это должно быть сгенерировано для вашего 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);
});
0 голосов
/ 25 октября 2011

в 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"

...