1

给定这样的网址:http://mydomain.com/mypage.asp?Animal=Elephant

VBScript 提供了一种使用 Request 对象获取 QueryString 中各个项目的好方法:

dim animal = Request.QueryString["Animal"]

我已经看到一些相当复杂的 JavaScript 漂浮在周围做类似的事情,但我希望 jQuery 库有一个函数可以做到这一点,而不必重新发明一些轮子。我在我拥有的 jQuery 书籍和 jQuery 网站上都找不到它。

我在树上吠叫吗?是否有 NATIVE jQuery 函数来执行此操作?

请注意,我的问题是要求存在NATIVE JQUERY FUNCTION以获得与我上面提供的 VBScript 相当的 QueryString。该问题的单线解决方案。如:

var animal = $.getParameterByName("Animal");

我的问题只有 2 个可能的答案。他们是:

  1. 不,没有描述的原生单行 jQuery 函数,或者
  2. 是的,这里有一个原生的单行 jQuery 函数,这里是......

我知道如何获取整个 QueryString 以及如何使用 Javascript 解析它——我不知道是否有一个 jQuery 方法或函数可以满足我的要求。

4

2 回答 2

1

“不,没有描述的原生单行 jQuery 函数”

但是,改变这一点非常容易。

(function($){
    function getParameterByName(name) {
        name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
            results = regex.exec(location.search);
        return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
    }
    $.getParameterByName = getParameterByName;
})(jQuery);

将其包含在 jquery 之后的头部中,您现在可以简单地执行以下操作:

var animal = $.getParameterByName("Animal");

按名称获取参数的方法取自:如何在 JavaScript 中获取查询字符串值?

于 2013-10-17T22:15:01.647 回答
0

我知道这不能回答您的问题,但我同意 VBScript 方式确实感觉不错。

window.Request = {
  QueryString: {}
};

window.location.search.split('?')[1].split('&').forEach(function(kv){
  Request.QueryString[kv.split('=')[0]] = decodeURIComponent(
    kv.split('=')[1].replace(/\+/g, " ")
  );
});

var animal = Request.QueryString['animal'];
于 2013-10-18T00:04:56.180 回答