Javascript 从URL获取整个查询
我在使用protoypejs框架中的toQueryParams函数从url获取整个查询时遇到问题,例如:Javascript 从URL获取整个查询,javascript,hash,prototypejs,Javascript,Hash,Prototypejs,我在使用protoypejs框架中的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:
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'}
我知道url无效,但我想在将其发送到服务器之前对该url进行预处理以转义其值
我试图更改正则表达式的函数,使其只匹配第一个正则表达式之间的字符?最后一个,我已经有了一个表达式/(\?*)/,它对我有用,但我甚至想排除?还有#,我希望你们中有人能帮我:)
顺便说一句,下面的页面对于实时构建regexp是非常有用的:p
更新:感谢DaveRandom:)
对于那些想直接在框架中修复的人,请将以下行替换为:
L625: var match = this.strip().match(/\?([^#]*)/); // (/([^?#]*)(#.*)?$/); default
这个怎么样<代码>/\?([^\]*)/
您不必担心匹配到“最后一个”
,因为锚点从第一个
开始,因此即使字符串中有多个
,第一次出现之后的任何内容都不是查询字符串的一部分。这如何<代码>/\?([^\]*)/
您不必担心匹配到“最后一个”
,因为锚点从第一个
开始,因此,即使字符串中有多个
,第一次出现之后的任何内容都不是查询字符串的一部分。用户/\?([^]*)/
,正如DaveRandom回答的那样,记住对变量进行URL编码。使用encodeURIComponent(“值”)代码>在将其添加到url之前。。您的url中不能有两个?
。用户/\?([^#]*)/
,正如DaveRandom所回答的,记住url编码您的变量。使用encodeURIComponent(“值”)代码>在将其添加到url之前。。您的url中不能有两个?
。在这里,这是有效的。。。。我只是将第一个?
和最后一个#
之间的所有内容连接起来,并在上面运行查询参数。也许这足够好了
edit还将所有?&
替换为?
,因此所有参数都匹配…在这里,这是有效的。。。。我只是将第一个?
和最后一个#
之间的所有内容连接起来,并在上面运行查询参数。也许这足够好了
edit还将所有?&
替换为?
,因此所有参数都匹配…我不确定,但它似乎也不起作用:。Prototype似乎在最后一个?
之后读取所有内容。您必须对变量进行URL编码。使用组件(“值”);在将其添加到您的url之前,上面的内容对我很有用(a=lol&b=lal&c=laoa?&d=fehw
,这是必需的,不是吗?),但需要注意的是,字符串上仍然有第一个?
,我相信这是通过此操作无法避免的(虽然我可能错了,但如果有人不知道的话,请纠正我)。你总是可以关闭第一个?
。@Marc,我知道,但问题是我的函数已经收到“fu****up”url和我需要exploid来转义它的值,并将它放回一个有效的url…这就是为什么我需要该函数能够支持更多?”s@tetra,您可以将url拆分为第一个?,然后拆分第二部分[基本上是变量和值],再拆分为=(等于字符)…对所有值进行编码,并将所有内容连接在一起,以完成正确编码的url。我不确定,但它似乎也不起作用:。Prototype似乎在上一次?
之后读取了所有内容。您必须对变量进行url编码。在将其添加到url之前,请使用encodeURIComponent(“值”);以上方法对我适用(给我?a=lol&b=laal&c=laoa?&d=fehw
,这是必需的,不是吗?),并警告字符串上仍然有第一个?
,我相信这是通过此操作无法避免的(尽管我可能是错的,如果有人知道其他情况,请纠正我)。您可以始终substr()
第一个?
关闭。@Marc,我知道,但问题是我的函数已经接收到“fu****up”url,我需要分解其值并将其放回有效的url…这就是为什么我需要该函数能够支持更多内容的原因s@tetra,您可以将url拆分为第一部分?,然后拆分第二部分[基本上是变量和值],按=(等于字符)拆分…对所有值进行编码,并将所有内容连接在一起,以完成正确编码的url。第二个匹配不包括?和#第二个匹配不包括?和#不,我不想丢失任何数据,替换在我的情况下是不好的不,我不想丢失任何数据,替换在我的情况下是不好的