cor*_*ore 105 javascript query-string
是否有任何JavaScript库使查询字符串中的字典成为ASP.NET
样式?
可以使用的东西像:
var query = window.location.querystring["query"]?
Run Code Online (Sandbox Code Playgroud)
是"查询字符串"叫别的东西外面.NET
的境界?为什么没有location.search
分成键/值集合?
编辑:我已经编写了自己的函数,但是任何主要的JavaScript库都可以这样做吗?
CMS*_*CMS 230
您可以从location.search属性中提取键/值对,此属性是否包含以下URL的部分?符号,包括?符号.
function getQueryString() {
var result = {}, queryString = location.search.slice(1),
re = /([^&=]+)=([^&]*)/g, m;
while (m = re.exec(queryString)) {
result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}
return result;
}
// ...
var myParam = getQueryString()["myParam"];
Run Code Online (Sandbox Code Playgroud)
Qwe*_*rty 22
var queryDict = {}
location.search.substr(1).split("&").forEach(function(item) {
queryDict[item.split("=")[0]] = item.split("=")[1]
})
Run Code Online (Sandbox Code Playgroud)
对于查询字符串,?a=1&b=2&c=3&d&e
它返回:
> queryDict
a: "1"
b: "2"
c: "3"
d: undefined
e: undefined
Run Code Online (Sandbox Code Playgroud)
请参阅如何在JavaScript中获取查询字符串值的原始答案?
"?a=1&b=2&c=3&d&e&a=5&a=t%20e%20x%20t&e=http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dståle%26car%3Dsaab"
> queryDict
a: ["1", "5", "t e x t"]
b: ["2"]
c: ["3"]
d: [undefined]
e: [undefined, "http://w3schools.com/my test.asp?name=ståle&car=saab"]
Run Code Online (Sandbox Code Playgroud)
Sha*_*531 11
也许http://plugins.jquery.com/query-object/?
这是它的分支https://github.com/sousk/jquery.parsequery#readme.
在找到这篇文章之后,当我自己看时,我认为我应该补充一点,我不认为最高投票的解决方案是最好的.它不处理数组值(例如?a = foo&a = bar - 在这种情况下,我希望得到一个返回['foo','bar']).据我所知,它没有考虑编码值 - 例如十六进制字符编码,其中%20表示空格(例如:?a = Hello%20World)或用于表示空格的加号(例如:?a = Hello + World).
Node.js为查询字符串解析提供了一个非常完整的解决方案.在你自己的项目中取出并使用它是很容易的,因为它相当好的隔离和许可许可.
它的代码可以在这里查看:https://github.com/joyent/node/blob/master/lib/querystring.js
可以在这里看到Node的测试:https: //github.com/joyent/node/blob/master/test/simple/test-querystring.js我建议尝试其中一些与流行的答案,看看它是如何处理他们.
我还参与了一个专门添加此功能的项目.它是Python标准lib查询字符串解析模块的一个端口.我的分叉可以在这里找到:https://github.com/d0ugal/jquery.qeeree
或者您可以使用库sugar.js.
来自sugarjs.com:
Object.fromQueryString(str,deep = true )
将URL的查询字符串转换为对象.如果deep为false,则转换将仅接受浅参数(即没有具有[]语法的对象或数组),因为这些不是普遍支持的.
Run Code Online (Sandbox Code Playgroud)Object.fromQueryString('foo=bar&broken=wear') >{"foo":"bar","broken":"wear"} Object.fromQueryString('foo[]=1&foo[]=2') >{"foo":[1,2]}
例:
var queryString = Object.fromQueryString(location.search);
var foo = queryString.foo;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
156358 次 |
最近记录: |