1

我试图弄清楚如何在我的 AJAX 应用程序中启用后退和前进按钮,这是动态和数据库驱动的。为了捕获状态,我在关联数组中捕获 url、type 和 data 的一些值。

我在 'hashchange' 事件期间从浏览器取回哈希字符串,我只是不知道如何将其从编码的查询字符串转换回关联数组。有人可以帮忙吗?

4

4 回答 4

6

像这样的东西?

var hash = 'one=1&two=2',
    split = hash.split('&');

var obj = {};
for(var i = 0; i < split.length; i++){
    var kv = split[i].split('=');
    obj[kv[0]] = decodeURIComponent(kv[1] ? kv[1].replace(/\+/g, ' ') : kv[1]);
}
console.log(obj);
于 2011-02-25T21:58:08.983 回答
2

jQuery 有一个deserialize可能符合要求的插件。

或者看看这个 SO 答案,它编写了一个 jQuery 函数来做同样的事情。

于 2011-02-25T21:55:17.673 回答
2
function getQuery() {
    var query = window.location.hash.substring(1);
    var queryArray = [];
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        queryArray.push([pair[0], pair[1]);
    }
    return queryArray;
}
于 2011-02-25T21:59:20.140 回答
0

多谢你们。看起来对 $.bbq.getState() 的调用为我完成了大部分工作。但我稍后会需要那个反序列化方法......

于 2011-02-25T22:06:33.133 回答