2017-02-21 14 views
0

Я знаю, что этот вопрос задают много раз, но ни один из этих решений не работал для меня.Как изменить строку запроса URL с помощью JQuery

Что мне нужно сделать, это заменить строку запроса url другим значением.

Мне нужно заменить ?tab= на URL. Это мое требование.

URL:

http://localhost:3000/private_search/search_all?tab=playlists&term=phy&utf8=✓& 
rating[]=4&_=1487710144036 

мне нужно сделать это:

http://localhost:3000/private_search/search_all?tab=featured&term=phy&utf8=✓&rating[]=4&_=1487710144036 

http://localhost:3000/private_search/search_all?tab=all_schools&term=phy& 
utf8=✓&rating[]=4&_=1487710144036 

decodeURIComponent (this.url) возвращает:

http://localhost:3000/private_search/search_all?tab=playlists&term=phy&utf8=✓& 
rating[]=4&_=1487710144036 


$("#featured-url").attr('href', decodeURIComponent(this.url)); // need to change url here 
$("#school-url").attr('href', decodeURIComponent(this.url)); // need to change url here 
+0

Возможный дубликат из [Обновление существующих значений querystring URL-адреса с помощью jQuery] (http://stackoverflow.com/questions/9622207/updating-existing-url-querystring-values-with-jquery) –

+2

Если какое-либо из решений, представленных в вышеуказанном дубликате, работа для вас, [изменить] ваш вопрос включить как вы их реализовали и что не получилось, когда вы их пробовали. –

+0

Также возможно дублировать [добавить или обновить параметр строки запроса] (http://stackoverflow.com/questions/5999118/add-or-update-query-string-parameter) – Adam

ответ

2

Regular Expression является чрезвычайно мощным и совершенным для них рода ситуаций, но трудно учиться. Вот как это использовать в вашем примере.

$("#featured-url").attr('href', 
    $("#featured-url").attr('href').replace(/\?tab=[^&]+/, '?tab=featured') 
); 

$("#school-url").attr('href', 
    $("#school-url").attr('href').replace(/\?tab=[^&]+/, '?tab=all_schools') 
); 

Вот объяснение RegEx:

  • \? спички? характер (спасся, так как? имеет другие значения)
  • tab= матчи, что строка символов
  • [^&] соответствует ничего, кроме с &
  • + ожидает там быть один или несколько из предыдущего матча