2012-01-27 19 views
7

我在我的表單上做了serialize()並保存了字符串,是否有任何函數可以將值填充回到序列化字符串的形式?從序列化讀取到填充表單

+2

只要是明確的:你指的是jQuery的['連載()'](HTTP:// API .jquery.com/serialize /),而不是某些服務器端函數(如PHP的['serialize()']( http://www.php.net/manual/en/function.serialize.php))? – Tadeck 2012-01-27 15:46:33

回答

7

退房http://phpjs.org/functions/unserialize:571

我建議使用JavaScript通信序列化數據,而不是,您可以使用JSON。 PHP應該有json_encode()json_decode()來解決這個問題,而且javascript也有內置的JSON處理函數,你甚至可能不需要。例如,如果$.getJSON從服務器獲取有效的JSON字符串,它將自動轉換爲JavaScript對象。

編輯:假設你正在談論jQuery的$.serialize(),據我所知,沒有功能撤消此(我甚至不能確定爲什麼這將永遠是必要的。)但這應該工作:

$.each(serialized.split('&'), function (index, elem) { 
    var vals = elem.split('='); 
    $("[name='" + vals[0] + "']").val(vals[1]); 
}); 
+0

他/她對服務器端一無所知。它可能僅僅是客戶端(OP只是序列化表單然後想要使用它)。 – zizozu 2012-01-27 15:43:00

+0

@tandu這是一個很好的答案:) – Firdous 2012-01-27 16:04:54

+0

有輕微的麻煩;它替換'@'符號'%40' – Firdous 2012-01-27 16:10:44

6

這裏是爆丸的回答的更新版本註釋中的其他建議適用於:

$.each(serialized.split('&'), function (index, elem) { 
    var vals = elem.split('='); 
    $("[name='" + vals[0] + "']").val(decodeURIComponent(vals[1].replace(/\+/g, ' '))); 
});