2011-02-25 22 views
1

我想弄清楚如何在我的AJAX應用程序中啓用後退和前進按鈕,這是動態和數據庫驅動的。爲了捕獲狀態,我爲關聯數組中的url,type和data捕獲了一些值。如何在jQuery中反序列化一個很長的查詢字符串?

在'hashchange'事件期間,我從瀏覽器返回哈希字符串,我只是不知道如何將其從編碼查詢字符串變回關聯數組。任何人都可以幫忙嗎?

+0

[JavaScript/jQuery中的$ .param()反函數]的可能重複(http://stackoverflow.com/questions/1131630/the-param-inverse- javascript-jquery) – 2014-03-15 01:19:55

回答

2

jQuery有一個deserialize插件可能適合賬單。

或者看看this SO answer,它寫一個jQuery函數來做同樣的事情。

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

Josiah,這差不多就是金錢,但是我序列化的值已經加入了空間等等,並且已經被編碼提交。 jQuery反序列化插件正在工作,除了我現在不能解碼一些值。 – AKWF 2011-02-28 01:50:04

+0

@AKWF - 我更新了小提琴和文章解碼,並替換'+'字符。 – 2011-02-28 04:42:39

+0

我最終找到了URL Decoder插件。它立即工作,一些內部可能幾乎與你在這裏做的一樣。謝謝你的幫助Josiah。 – AKWF 2011-02-28 14:46:40

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; 
} 
+0

這會創建一個數組,而不是「關聯」數組或者更確切地說是對象。 – 2011-02-25 22:12:28

0

謝謝你們。它看起來像一個調用$ .bbq.getState()爲我做的大部分。但是後來我需要反序列化方法...

相關問題