繁体   English   中英

从URL获取整个查询

[英]Get whole query from the URL

我在使用protoypejs框架eG的toQueryParams函数从URL获取整个查询时遇到问题:

var a = "http://anypage.com?a=lol&b=lal&c=laoa?&d=fehw#lalalalalSomeAnchor";

a.toQueryParams();

>> {d: 'fehw'}

what i want to get:

>> {a: 'lol', b: 'lal', c: 'loaa?', d: 'fehw'}

我知道该网址无效,但我想对该网址进行预处理以转义其值,然后再将其发送到服务器。

我试图更改函数正则表达式以仅匹配第一个之间的字符? 和最新的#,我已经有一个表达式/(\\?.*#)/适用于我,但我什至想排除?? 和#,我希望你们中的某人可以帮助我:)

顺便说一句 下面的页面非常适合实时构建regexp:P http://regexpal.com/

更新 :感谢DaveRandom :)对于那些想要直接在框架中修复此问题的人,将以下行替换为:

L625: var match = this.strip().match(/\?([^#]*)/); // (/([^?#]*)(#.*)?$/); default

怎么样... /\\?([^#]*)/

你不应该需要担心匹配到“最后” #因为锚开始于第一# ,因此即使有不止一个#字符串中,第一次出现后,事情不是查询字符串的一部分。

用户/\\?([^#]*)/作为DaveRandom的回答,请记住要对变量进行URL编码。 使用encodeURIComponent("value"); 在将其添加到您的网址之前。 ..不能有两个? 在您的网址中。

在这里,这个工程....我只是拿了第一之间的一切? 最后一个#串联并运行到QueryParams上。 也许这足够好了?

http://jsfiddle.net/cQYV7/1/

编辑还用?&替换了所有?& ? 所以所有参数都匹配...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM