我想弄清楚如何在我的AJAX應用程序中啓用後退和前進按鈕,這是動態和數據庫驅動的。爲了捕獲狀態,我爲關聯數組中的url,type和data捕獲了一些值。如何在jQuery中反序列化一個很長的查詢字符串?
在'hashchange'事件期間,我從瀏覽器返回哈希字符串,我只是不知道如何將其從編碼查詢字符串變回關聯數組。任何人都可以幫忙嗎?
我想弄清楚如何在我的AJAX應用程序中啓用後退和前進按鈕,這是動態和數據庫驅動的。爲了捕獲狀態,我爲關聯數組中的url,type和data捕獲了一些值。如何在jQuery中反序列化一個很長的查詢字符串?
在'hashchange'事件期間,我從瀏覽器返回哈希字符串,我只是不知道如何將其從編碼查詢字符串變回關聯數組。任何人都可以幫忙嗎?
jQuery有一個deserialize
插件可能適合賬單。
或者看看this SO answer,它寫一個jQuery函數來做同樣的事情。
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);
Josiah,這差不多就是金錢,但是我序列化的值已經加入了空間等等,並且已經被編碼提交。 jQuery反序列化插件正在工作,除了我現在不能解碼一些值。 – AKWF 2011-02-28 01:50:04
@AKWF - 我更新了小提琴和文章解碼,並替換'+'字符。 – 2011-02-28 04:42:39
我最終找到了URL Decoder插件。它立即工作,一些內部可能幾乎與你在這裏做的一樣。謝謝你的幫助Josiah。 – AKWF 2011-02-28 14:46:40
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-25 22:12:28
謝謝你們。它看起來像一個調用$ .bbq.getState()爲我做的大部分。但是後來我需要反序列化方法...
[JavaScript/jQuery中的$ .param()反函數]的可能重複(http://stackoverflow.com/questions/1131630/the-param-inverse- javascript-jquery) – 2014-03-15 01:19:55