2009-09-13 49 views
2

假设你有一个网址:使用Javascript/jQuery获取给定URL参数值的最佳方法是什么?

http://www.example.com/whatever?this=that&where=when 

你会如何提取where参数的值(在这种情况下when)?

这是我想出了 - 我不知道是否有更好的解决方案:

$.fn.url_param_value = function(param) { 
    var url = $(this).attr('href'); 
    var regex = new RegExp(param + "="); 

    return $.grep(url.split("?")[1].split("&"), function(a) { 
    return a.match(regex); 
    })[0].split("=")[1]; 
} 

回答

5

使用jquery.query,玩得开心:)

,你可以简单地使用:

var w = $.query.get("where"); 
+0

TheVillageIdiot,是这个主要的jQuery库的一部分。相当有用... – 2009-09-13 05:22:34

+0

谢谢@David我为它使用了单独的插件:( – TheVillageIdiot 2009-09-13 05:38:22

+0

查询字符串对象是一个扩展创建一个单例查询字符串对象,以便快速和可读的查询字符串修改和创建此插件提供了一种简单的方法页面的查询字符串并用少量代码创建此修改版本。 – ranonE 2009-09-13 07:30:05

1

如果你没有jQuery,这里是我使用的函数:

function urlParam(name, w){ 
    w = w || window; 
    var rx = new RegExp('[\&|\?]'+name+'=([^\&\#]+)'); 
    var val = w.location.href.match(rx); 
    return !val ? '':val[1]; 
} 

如果您需要读取iframe参数,w是可选参数(默认为窗口)。

0

我使用JavaScript的此位从Netlobo.com

function gup(name) 
{ 
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
    var regexS = "[\\?&]"+name+"=([^&#]*)"; 
    var regex = new RegExp(regexS); 
    var results = regex.exec(window.location.href); 
    if(results == null) 
    return ""; 
    else 
    return results[1]; 
} 

,或者如果你正在寻找一个插件,尝试jQuery URL Parser

*编辑:嗯,纳米我猜TheVillageIdiot的建议是最简单最好& jQuery:P ... YAY,今天我学到了一些新东西:)但是你仍然应该看看这个插件,它很好,它会返回URL的any part,包括字符串中的数据。