我可以寫點東西,我問是否已經內置到jQuery中。jQuery序列化有反函數嗎?
回答
不,沒有。
您如何知道要更改哪個DOM元素?可能有不同形式的同名元素等。
也許parseJSON將幫助您:
jQuery.parseJSON(JSON)返回:對象
說明:取一個結構良好的JSON字符串,並返回結果的JavaScript對象。
謝謝... jQuery.serialize使用名稱屬性來序列化元素和值。這是除了URI編碼和打包。這個過程相當容易逆轉。我是新來的JavaScript廣告jQuery,我只是覺得我在文檔中丟失了一些東西。我必須咬下子彈,然後轉移到json – garyM 2012-03-25 00:07:36
_「不,沒有,也不可能」 - - 當然可以。只要在特定的表單上調用(建議的)'deserialize()'方法,值就會回到那個表單。如果有多個具有相同名稱的元素,應該按照序列化版本中的重複項的順序進行設置(與.serialize()所做的相反)。我已經在多個項目上成功使用了這樣的函數(不是用jQuery),但是由程序員來確保選擇器是正確的。 – nnnnnn 2012-03-25 00:34:14
@nnnnnn。你是對的,可能會有一個不安全的版本。但是jQuery(盡我所知)沒有不安全的函數。他可以寫第一個,如果他喜歡... – gdoron 2012-03-25 05:40:57
簡答:沒有,沒有東西built into jQuery這樣做。不知道爲什麼不......
但這裏是一個jQuery插件如果您使用.serialize()
得到一個序列化的字符串應該做的伎倆:
$.fn.deserialize = function (serializedString)
{
var $form = $(this);
$form[0].reset(); // (A) optional
serializedString = serializedString.replace(/\+/g, '%20'); // (B)
var formFieldArray = serializedString.split("&");
// Loop over all name-value pairs
$.each(formFieldArray, function(i, pair){
var nameValue = pair.split("=");
var name = decodeURIComponent(nameValue[0]); // (C)
var value = decodeURIComponent(nameValue[1]);
// Find one or more fields
var $field = $form.find('[name=' + name + ']');
// Checkboxes and Radio types need to be handled differently
if ($field[0].type == "radio" || $field[0].type == "checkbox")
{
var $fieldWithValue = $field.filter('[value="' + value + '"]');
var isFound = ($fieldWithValue.length > 0);
// Special case if the value is not defined; value will be "on"
if (!isFound && value == "on") {
$field.first().prop("checked", true);
} else {
$fieldWithValue.prop("checked", isFound);
}
} else { // input, textarea
$field.val(value);
}
});
return this;
}
(一) 重置在頂部是可選的。您可能需要首先復位的字段值,或明確他們使用這樣的事情可能要:https://stackoverflow.com/a/6786237/1766230
(B)查看https://stackoverflow.com/a/24417399/1766230爲什麼我們需要更換+
。
(C)有關decodeURIComponent
的信息,請參閱Mozilla Developer Javascript Reference。
(注:如果您使用.serializeArray()
或一些其他的方式來序列數據,上面的都不行,你會發現這些解決方案有用的:jQuery plugin to serialize a form and also restore/populate the form?)
鏜用法示例:
var $form = $('form.myFormClass');
var s = $form.serialize();
$form.deserialize(s);
這裏是一個讓你玩的設定值,結算,重置的jsfiddle和「反序列化」:http://jsfiddle.net/luken/4VVs3/
大提琴感謝您花時間做出/鏈接。 – Tom 2016-09-29 01:40:10
- 1. 序列化和反序列化數組(沒有jQuery?)
- 2. jQuery序列化和反序列化
- 3. JQuery序列化和反序列化
- 4. 在jQuery中序列化/反序列化
- 5. YShout 5:函數反序列化錯誤
- 6. 反序列化時跳過函數
- 7. 反序列化函數不起作用
- 8. C++ arbitary函數的反序列化
- 9. xcode中的反序列化函數
- 10. PHP反序列化錯誤反序列化時,jQuery的序列化形式
- 11. jQuery反序列化PHP序列化的數據
- 12. PHP序列化的數據反序列化的jQuery
- 13. PHP反序列化序列化數據
- 14. 序列化/反序列化PHP數組
- 15. 反序列化反序列化接口
- 16. JSON反序列化不反序列化?
- 17. Haskell函數可以被序列化嗎?
- 18. \ http_parse_headers()有反向函數嗎?
- 19. 爲什麼在使用IsolatedStorageSettings.ApplicationSettings直接使用序列化/反序列化函數時可以使用序列化/反序列化函數?
- 20. 反序列化沒有默認的構造函數C#
- 21. 有條件的PHP反序列化函數
- 22. 反序列化的步驟數約反序列化
- 23. Silverlight的序列化/反序列化可能嗎?
- 24. BinaryFormatter序列化和反序列化線程安全嗎?
- 25. 調用構造函數時,反序列化JSON反對
- 26. datacontract序列化使用反射嗎?
- 27. 如何反序列化具有參數化構造函數的對象
- 28. 反序列化數組
- 29. Xml數據反序列化
- 30. 反序列化JSON數據
可能有,但要看你的問題,你還沒有告訴上下文我們。你想做什麼? – Bojangles 2012-03-24 23:29:47
也許這有助於:http://stackoverflow.com/questions/901115/get-query-string-values-in-javascript – stewe 2012-03-24 23:30:54
謝謝我只是想懶惰..我只是從來沒有理解hwy使一個方便的功能,而不是提供反向..乾杯:) – garyM 2012-03-25 00:10:38