使用javascript读取/处理查询字符串参数的最简单方法是什么?

时间:2020-03-06 14:53:36  来源:igfitidea点击:

我在网上看到的示例似乎比我预期的要复杂得多(手动将&/?/ =解析为对,使用正则表达式等)。我们正在使用asp.net ajax(在其客户端参考中看不到任何内容),并且如果确实有帮助,将考虑添加jQuery。

我想到目前为止,有一个更优雅的解决方案,这是我找到的最好的代码,但是我很想在HttpRequest.QueryString对象(asp.net服务器端)的基础上找到更多的东西。提前致谢,

尚恩

解决方案

确实有一个jQuery的QueryString插件,如果我们愿意安装jQuery核心和该插件,可能会证明是有用的。

看一下我的帖子,它告诉我们确切的操作方法:

http://seattlesoftware.wordpress.com/2008/01/16/javascript-query-string/

使用prototypejs.org中的String实用程序,称为toQueryParams()。

他们网站上的示例:http://prototypejs.org/api/string/toQueryParams

'section=blog&id=45'.toQueryParams();

  // -> {section: 'blog', id: '45'}
  'section=blog;id=45'.toQueryParams();

  // -> {section: 'blog', id: '45'}
  'http://www.example.com?section=blog&id=45#comments'.toQueryParams();

  // -> {section: 'blog', id: '45'}
  'section=blog&tag=javascript&tag=prototype&tag=doc'.toQueryParams();

  // -> {section: 'blog', tag: ['javascript', 'prototype', 'doc']}
  'tag=ruby%20on%20rails'.toQueryParams();

  // -> {tag: 'ruby on rails'}
  'id=45&raw'.toQueryParams();

  // -> {id: '45', raw: undefined}

另外,我们可以使用别名parseQuery()获得相同的结果。

window.location.search.parseQuery();

由于window.location返回一个对象,因此我们必须获取该字符串。

对于jQuery,我建议使用jQuery BBQ:" Cowboy" Ben Alman的"后退按钮和查询库"

jQuery BBQ leverages the HTML5
  hashchange event to allow simple, yet
  powerful bookmarkable #hash history.
  In addition, jQuery BBQ provides a
  full .deparam() method, along with
  both hash state management, and
  fragment / query string parse and
  merge utility methods.

例子:

// Parse URL, deserializing query string into an object.
// http://www.example.com/foo.php?a=1&b=2&c=hello#test
// search is set to ?a=1&b=2&c=hello
// myObj is set to { a:"1", b:"2", c:"hello" }
var search = window.location.search;
var myObj = $.deparam.querystring( search );

我正在使用此功能,以防我不想使用插件:

function getQueryVariable(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable) {
            return pair[1];
        }
    }
    return null;
}