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