我有一个问题,使用从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在我将它发送到服务器之前转义它的值。
我试图改变函数的正则表达式,只匹配第一个字符?和最新的#,我已经有一个表达式/(\?.*#)/这会对我有效,但我甚至想排除?和#,我希望你们中有人能帮助我:)
btw。下面该网页是要命实时构建正则表达式:P http://regexpal.com/
更新:感谢DaveRandom :) 对于那些谁想要解决这个问题,直接在framwork替换以下符合:
L625: var match = this.strip().match(/\?([^#]*)/); // (/([^?#]*)(#.*)?$/); default
我不知道,但它似乎没有工作,要么:http://jsfiddle.net/pimvdb/rWE62 /。原型似乎在最后一个'?'后面读取所有内容。 – pimvdb
您必须对您的变量进行编码。使用encodeURIComponent(“value”);然后将其添加到您的网址。 –
上面的作品对我来说(给我'?a = lol&b = lal&c = laoa?&d = fehw'这是需要的,不是吗?),但要注意字符串仍然有第一个'?'它,我认为这是不可避免的(尽管我可能是错的,如果他们知道的话,请纠正我)。你总是可以将substr()第一个'?'关闭。 – DaveRandom