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

发布于 2024-10-19 13:30:00 字数 161 浏览 3 评论 0原文

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

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

I'm trying to figure out how to enable the back and forward buttons in my AJAX application, which is dynamic and database driven. To capture the state, I am trapping some values for url, type, and data in an associative array.

I am getting the hash string back from the browser during the 'hashchange' event, I just don't know how to turn it back into an associative array from the encoded query string. Can anybody help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

探春 2024-10-26 13:30:00

类似这样的东西?

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

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);
守不住的情 2024-10-26 13:30:00

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

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

jQuery has a deserialize plugin that might fit the bill.

Alternatively take a look at this SO answer which writes a jQuery function to do the same.

葬シ愛 2024-10-26 13:30:00
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;
}
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;
}
多情出卖 2024-10-26 13:30:00

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

Thanks guys. It looks like a call to $.bbq.getState() does most of it for me. But I will need that deserialize method later...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文