使用JavaScript读取/操作查询字符串参数的最简单方法是什么?

13
我在网上看到的示例比我预期的要复杂得多(需要手动将 &/?/= 解析成一对,使用正则表达式等)。我们正在使用asp.net ajax(客户端参考文档中似乎没有相关内容),如果真的有帮助的话,可以考虑添加jQuery。
我认为可能存在更优雅的解决方案 - 迄今为止,我发现这是我找到的最好的代码,但我希望能找到更类似于HttpRequest.QueryString对象(asp.net服务器端)的东西。提前感谢您的回复!
谢恩

可能是重复的问题:如何获取查询字符串的值? - Michel Ayres
可能是 Change URL parameters 的重复内容。 - Sindre Sorhus
7个回答

12

如果您愿意安装jQuery核心和此插件,确实有一个与jQuery相关的QueryString插件,它可能会对您有所帮助。


经过一些工作,我们正在逐步将我们的asp.net应用程序移植到jQuery。这个库真的给我们留下了深刻的印象,很快就会由微软分发,所以如果您遇到类似的JS问题/疑问,我建议您查看jQuery。 - jskunkle
5
一年多过去了——我们开始全面采用 jQuery,并强烈推荐它用于解析查询字符串或几乎任何客户端任务。 - jskunkle

10

如果我不想使用插件,我会使用这个函数:

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;
}

4

+1 是因为它不使用任何第三方库,有时你就是无法导入它们(例如在小部件/小工具上工作时)。 - Pawel Krakowiak

2
我推荐使用“牛仔”Ben Alman开发的jQuery BBQ:后退按钮和查询库来处理jQuery相关技术。

jQuery BBQ利用HTML5的hashchange事件,允许简单而强大的可书签化#哈希历史记录。此外,jQuery BBQ提供了完整的.deparam()方法,并提供了哈希状态管理,以及片段/查询字符串解析和合并实用程序方法。

示例:

// 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 );

1

1
使用来自prototypejs.org的String工具,叫做toQueryParams()。
从他们的网站上看一个例子:http://prototypejs.org/api/string/toQueryParams。 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返回一个对象,您必须获取字符串。


1
  *$(document).ready(function () {
            $("#a").click(function () {
                window.location.href = "secondpage.aspx?id='0' & name='sunil'& add='asr' & phone='1234'";
            });
        });*


**then read the query string parameters on another using split method . Here as follows:**


  *$(document).ready(function () {
            var a = decodeURI(window.location.search);
            var id = window.location.search = "id=" + $().val();
            var name = a.split("name=")[1].split("&")[0].split("'")[1];
            var phone = a.split("phone=")[1].split("&")[0].split("'")[1];
            var add = a.split("add=")[1].split("&")[0].split("'")[1];
            alert(id+','+name+','+add+','+phone); 
        });*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接