我正在试图弄清楚如何在我的AJAX应用程序中启用后退和前进按钮,这是动态的和数据库驱动的。为了捕获状态,我在关联数组中捕获url,type和data的一些值。
我在'hashchange'事件期间从浏览器返回哈希字符串,我只是不知道如何将它从编码的查询字符串转回到关联数组中。有人可以帮忙吗?
答案 0 :(得分: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);
答案 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()的调用对我来说是大部分。但是我稍后需要反序列化方法......