有很多 js 代码可以读取查询字符串。
然而,在我看到来自facebook login
哪个的回复之后,就像
http://localhost:55643/WebSite2/HTMLPage2.htm#access_token=CAACSIC6Koe......roHXCK8ZD&expires_in=5439
我对自己说,我必须编写一些代码来处理哈希 ( #
) 之后的值。
所以我做了:
(function ($)
{
$.getQs = function (specificUrl)
{
var st = specificUrl || window.location.href;
var o = {}, e;
var re = /([^#?&=]+)=([^&#]*)/ig;
while (e = re.exec(st))
{
o[e[1]] = e[2];
}
//console.log(o);
return o;
}
})(jQuery);
这将返回一个包含所有值的对象,并且QS
hash
(如果specifiedUrl
未定义 - 它将查看浏览器 url)
用法 1:(针对特定URL):
console.log($.getQs('www.example.com?ferko=suska&ee=huu#a=1&b=2&c=3'));
这将返回
Object {ferko: "suska", ee: "huu", a: "1", b: "2", c: "3"}
用法 2:(对于当前URL):
我当前的网址:
http://localhost:55643/WebSite2/HTMLPage.htm?ferko=suska&ee=huu#a=1&b=2&c=3
所以$.getQs()
也产生
Object {ferko: "suska", ee: "huu", a: "1", b: "2", c: "3"}
那么问题出在哪里?
这里是 :
http://localhost:55643/WebSite2/HTMLPage.htm?ferko=suska&ee=huu#a=1&b=2&c=3&ee=grrr
注意还有QS有ee
也hash
侧有ee
。
我怎样才能在我的对象中反映这一点?
编辑
这就是我阅读facebook期望值的方式
console.log($.getQs('http://localhost:55643/WebSite2/HTMLPage2.htm#access_token=CAACSIC6KoeroHXCK8ZD&expires_in=5439').access_token);
产量
CAACSIC6KoeroHXCK8ZD