Изменить строку параметров URL с помощью JavaScript - PullRequest
1 голос
/ 12 марта 2012

Я хочу удалить некоторые параметры из строки URL:

Например:

У меня есть такая строка:

var url = '/browse/102?color=red&type=car&rpp=10&ajax=1&change=1';

и такой массив:

var ignore = new Array("change","ajax"); 

Результат

/browse/102?color=red&type=car&rpp=10

Какой самый короткий и быстрый способ достичь этого?

Ответы [ 3 ]

2 голосов
/ 12 марта 2012

А как насчет RegExp? Вот пример функции:

var url = '/browse/102?color=red&type=car&rpp=10&a=mode&ajax=1&change=1&mode&test';
var ignore = new Array("change","ajax", "mode", "test"); 
alert(removeParams(url, ignore));

function removeParams(address, params)
{
    for (var i = 0; i < params.length; i++)
    {
       var reg = new RegExp("([\&\?]+)(" + params[i] + "(=[^&]+)?&?)", "g")
       address = address.replace(reg, function($0, $1) { return $1; });
    }
    return address.replace(/[&?]$/, "");
}​

Редактировать: перенесено в отдельную функцию, как это сделал Михал Б.

1 голос
/ 12 марта 2012

Вот простая утилита, которую я использую в своем приложении, чтобы поиграться с URL.http://jsfiddle.net/gwB2C/

Прост в использовании:

var url_parser = new URLParser('/browse/102?color=red&type=car&rpp=10&ajax=1&change=1');
alert(url_parser.toString()); 
// result = "/browse/102?color=red&type=car&rpp=10&ajax=1&change=1"
url_parser.removeParams(["color", "type"]);
alert(url_parser.toString()); 
// result = "/browse/102?rpp=10&ajax=1&change=1"
url_parser.addParams({color:"green", test : 1});
alert(url_parser.toString()); 
// result = "/browse/102?rpp=10&ajax=1&change=1&color=green&test=1"
1 голос
/ 12 марта 2012

Вот пример функции jsfiddle, которая делает это: http://jsfiddle.net/ANGsJ/1/
PS.Я использовал регулярное выражение Just_Mad, так как мое было немного страшнее;)

...