The examples I've seen online seem much more complex than I expected (manually parsing &/?/= into pairs, using regular expressions, etc). We're using asp.net ajax (don't see anything in their client side reference) and would consider adding jQuery if it would really help.
我在网上看到的例子似乎比我预期的要复杂得多(手动解析&/?/ =成对,使用正则表达式等)。我们正在使用asp.net ajax(在客户端参考中看不到任何内容)并且会考虑添加jQuery,如果真的有帮助的话。
I would think there is a more elegant solution out there - so far this is the best code I've found but I would love to find something more along the lines of the HttpRequest.QueryString object (asp.net server side). Thanks in advance,
我认为那里有一个更优雅的解决方案 - 到目前为止这是我找到的最好的代码,但我希望找到更多类似于HttpRequest.QueryString对象(asp.net服务器端)的内容。提前致谢,
Shane
7 个解决方案
#1
13
There is indeed a QueryString plugin for jQuery, if you're willing to install the jQuery core and the plugin it could prove useful.
确实有一个jQuery的QueryString插件,如果你愿意安装jQuery核心和插件,它可能会证明是有用的。
#2
8
I am using this function in case i don't want to use a plugin:
我正在使用此功能,以防我不想使用插件:
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;
}
#3
3
Take a look at my post, as it tells you exactly how to do this:
看看我的帖子,因为它告诉你具体如何做到这一点:
http://seattlesoftware.wordpress.com/2008/01/16/javascript-query-string/
#4
2
For jQuery I suggest jQuery BBQ: Back Button & Query Library By "Cowboy" Ben Alman
对于jQuery我建议jQuery BBQ:Back Button&Query Library由“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.
jQuery BBQ利用HTML5 hashchange事件来允许简单而强大的可收藏的#hash历史记录。此外,jQuery BBQ提供了完整的.deparam()方法,以及散列状态管理和片段/查询字符串解析和合并实用程序方法。
Example:
// 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 );
#5
1
Use the String utility from prototypejs.org, called toQueryParams().
使用来自prototypejs.org的String实用程序,名为toQueryParams()。
Example from their site: http://prototypejs.org/api/string/toQueryParams
来自他们网站的示例:http://prototypejs.org/api/string/toQueryParams
'section=blog&id=45'.toQueryParams();
// -> {section: 'blog', id: '45'}“部分=博客&ID = 45'.toQueryParams(); // - > {section:'blog',id:'45'}
'section=blog;id=45'.toQueryParams();
// -> {section: 'blog', id: '45'}“部分=博客; ID = 45'.toQueryParams(); // - > {section:'blog',id:'45'}
'http://www.example.com?section=blog&id=45#comments'.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']}“部分=博客&标签= JavaScript的&标签=原型&标签= doc'.toQueryParams(); // - > {section:'blog',tag:['javascript','prototype','doc']}
'tag=ruby%20on%20rails'.toQueryParams();
// -> {tag: 'ruby on rails'}“标记=红宝石%20on%20rails'.toQueryParams(); // - > {tag:'ruby on rails'}
'id=45&raw'.toQueryParams();
// -> {id: '45', raw: undefined}“ID = 45&raw'.toQueryParams(); // - > {id:'45',raw:undefined}
Also, you may use the alias parseQuery() to obtain the same results.
此外,您可以使用别名parseQuery()来获得相同的结果。
window.location.search.parseQuery();
Since window.location returns an object, you must obtain the string.
由于window.location返回一个对象,因此您必须获取该字符串。
#6
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);
});*
#7
1
If there's any possibility of encountering repeated parameters (e.g. ?tag=foo&tag=bar), most libraries out there won't be sufficient. In that case, you might want to consider this library that I developed from Jan Wolter's very comprehensive parser. I added .plus() and .minus() functions and roundtripping:
如果有可能遇到重复参数(例如?tag = foo&tag = bar),那么大多数库都不够用。在这种情况下,您可能想要考虑我从Jan Wolter非常全面的解析器开发的这个库。我添加了.plus()和.minus()函数和往返:
https://github.com/timmc/js-tools/blob/master/src/QueryString.js
#1
13
There is indeed a QueryString plugin for jQuery, if you're willing to install the jQuery core and the plugin it could prove useful.
确实有一个jQuery的QueryString插件,如果你愿意安装jQuery核心和插件,它可能会证明是有用的。
#2
8
I am using this function in case i don't want to use a plugin:
我正在使用此功能,以防我不想使用插件:
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;
}
#3
3
Take a look at my post, as it tells you exactly how to do this:
看看我的帖子,因为它告诉你具体如何做到这一点:
http://seattlesoftware.wordpress.com/2008/01/16/javascript-query-string/
#4
2
For jQuery I suggest jQuery BBQ: Back Button & Query Library By "Cowboy" Ben Alman
对于jQuery我建议jQuery BBQ:Back Button&Query Library由“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.
jQuery BBQ利用HTML5 hashchange事件来允许简单而强大的可收藏的#hash历史记录。此外,jQuery BBQ提供了完整的.deparam()方法,以及散列状态管理和片段/查询字符串解析和合并实用程序方法。
Example:
// 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 );
#5
1
Use the String utility from prototypejs.org, called toQueryParams().
使用来自prototypejs.org的String实用程序,名为toQueryParams()。
Example from their site: http://prototypejs.org/api/string/toQueryParams
来自他们网站的示例:http://prototypejs.org/api/string/toQueryParams
'section=blog&id=45'.toQueryParams();
// -> {section: 'blog', id: '45'}“部分=博客&ID = 45'.toQueryParams(); // - > {section:'blog',id:'45'}
'section=blog;id=45'.toQueryParams();
// -> {section: 'blog', id: '45'}“部分=博客; ID = 45'.toQueryParams(); // - > {section:'blog',id:'45'}
'http://www.example.com?section=blog&id=45#comments'.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']}“部分=博客&标签= JavaScript的&标签=原型&标签= doc'.toQueryParams(); // - > {section:'blog',tag:['javascript','prototype','doc']}
'tag=ruby%20on%20rails'.toQueryParams();
// -> {tag: 'ruby on rails'}“标记=红宝石%20on%20rails'.toQueryParams(); // - > {tag:'ruby on rails'}
'id=45&raw'.toQueryParams();
// -> {id: '45', raw: undefined}“ID = 45&raw'.toQueryParams(); // - > {id:'45',raw:undefined}
Also, you may use the alias parseQuery() to obtain the same results.
此外,您可以使用别名parseQuery()来获得相同的结果。
window.location.search.parseQuery();
Since window.location returns an object, you must obtain the string.
由于window.location返回一个对象,因此您必须获取该字符串。
#6
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);
});*
#7
1
If there's any possibility of encountering repeated parameters (e.g. ?tag=foo&tag=bar), most libraries out there won't be sufficient. In that case, you might want to consider this library that I developed from Jan Wolter's very comprehensive parser. I added .plus() and .minus() functions and roundtripping:
如果有可能遇到重复参数(例如?tag = foo&tag = bar),那么大多数库都不够用。在这种情况下,您可能想要考虑我从Jan Wolter非常全面的解析器开发的这个库。我添加了.plus()和.minus()函数和往返:
https://github.com/timmc/js-tools/blob/master/src/QueryString.js