Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从URL获取整个查询_Javascript_Hash_Prototypejs - Fatal编程技术网

Javascript 从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:

我在使用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: '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。第二个匹配不包括?和#第二个匹配不包括?和#不,我不想丢失任何数据,替换在我的情况下是不好的不,我不想丢失任何数据,替换在我的情况下是不好的