这是我的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值
答案 0 :(得分:2)
在纯JavaScript中,请尝试
function getParameterByName(name) {
var match = RegExp('[?&]' + name + '=([^&]*)')
.exec(window.location.search);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
<强> Reference 强>
在jQuery中看到这个插件
当你获取所有查询字符串的数组然后通过jQuery从数组中删除重复时尝试 unique 或看到此插件
答案 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];