Jquery / Javascript删除url字符串中的重复参数

时间:2011-05-13 17:36:20

标签: javascript jquery

这是我的url字符串,我试图分解参数并获取“q”参数的值。

a) http://myserver.com/search?q=bread?topic=14&sort=score
b) http://myserver.com/search?q=bread?topic=14&sort=score&q=cheese

how do i use Jquery/JavaScript to get "q" value?

对于案例a),我可以使用字符串拆分或使用jquery getUrlParam来获取q value = bread

对于案例b),当有重复时,如果有多个“q”参数,我如何在最后检索q值

4 个答案:

答案 0 :(得分:2)

在纯JavaScript中,请尝试

function getParameterByName(name) {

    var match = RegExp('[?&]' + name + '=([^&]*)')
                    .exec(window.location.search);

    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));

}

<强> Reference

在jQuery中看到这个插件

https://github.com/allmarkedup/jQuery-URL-Parser

更新

当你获取所有查询字符串的数组然后通过jQuery从数组中删除重复时尝试 unique 或看到此插件

http://plugins.jquery.com/plugin-tags/array-remove-duplicates

答案 1 :(得分:1)

您可以在这里使用正则表达式。例如,我们可能有这个字符串:

var str = 'http://myserver.com/search?q=bread&topic=14&sort=score&q=cheese';

通过剥离从开头到第一个问号的所有内容来查找URL的搜索部分。

var search = str.replace(/^[^?]+\?/, '');

设置模式以捕获所有q=something

var pattern = /(^|&)q=([^&]*)/g;
var q = [], match;

然后执行模式。

while ((match = pattern.exec(search))) {
    q.push(match[2]);
}

之后,q将包含所有q个参数。在这种情况下,[ "bread", "cheese" ]

然后您可以使用q中的任何一个。

如果您只关心最后一行,则可以将q.push行替换为q = match[2]

答案 2 :(得分:0)

看起来你可以使用getUrlParam作为两者,但你必须将第二个案例的返回值作为具有多个值的数组来处理(至少在getUrlParam code我正在看)。

答案 3 :(得分:0)

getUrlParam(&#39; q&#39;)应该返回一个数组。尝试使用以下代码获取这些值:

values = $.getUrlParam('q');

// use the following code
first_q_value = values[0];
second_q_value = values[1];