如何在jQuery中反序列化一个很长的查询字符串?

时间:2011-02-25 21:51:23

标签: jquery jquery-bbq

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

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

4 个答案:

答案 0 :(得分:6)

something like this?

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);

答案 1 :(得分:2)

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

或者看一下编写jQuery函数的this SO answer来做同样的事情。

答案 2 :(得分: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;
}

答案 3 :(得分:0)

谢谢你们。看起来像$ .bbq.getState()的调用对我来说是大部分。但是我稍后需要反序列化方法......