jQuery序列化是否有反函数?

jQuery序列化是否有反函数?,jquery,serialization,reverse,Jquery,Serialization,Reverse,我可以写一些东西,我在问jQuery是否已经内置了一些东西 没有 您如何知道要更改哪个DOM元素?可能有相同的元素以不同的形式具有相同的名称等 也许会帮助你: parseJSON(json)返回:Object 描述:获取格式良好的JSON字符串并返回结果JavaScript对象 简短回答:不,没有什么可以做的。不知道为什么不 但是这里有一个jQuery插件,如果您使用.serialize()获取序列化字符串,它应该会起到作用: $.fn.deserialize = function (seria

我可以写一些东西,我在问jQuery是否已经内置了一些东西

没有

您如何知道要更改哪个DOM元素?可能有相同的元素以不同的形式具有相同的名称等

也许会帮助你:

parseJSON(json)返回:Object
描述:获取格式良好的JSON字符串并返回结果JavaScript对象


简短回答:,没有什么可以做的。不知道为什么不

但是这里有一个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;
}
(A) 顶部的重置是可选的。您可能希望首先重置字段值,或者可能希望使用如下方法清除字段值:

(B) 请参阅,了解我们需要更换
+
的原因

(C) 有关
decodeURIComponent
的信息,请参阅

(注意:如果您正在使用
.serializeArray()
或其他方式序列化数据,上述方法将不起作用;您可能会发现其中一些解决方案很有用:)

无聊的用法示例:

var $form = $('form.myFormClass');
var s = $form.serialize();
$form.deserialize(s);

这里有一个JSFIDLE,让您可以随意设置值、清除、重置和“反序列化”:

可能有,但这取决于您的问题的上下文,您没有告诉我们。你想做什么?也许这有帮助:谢谢,我只是想偷懒。。我只是不明白为什么要做一个方便的函数而不提供相反的结果。。干杯:)谢谢。。。serialize使用name属性序列化元素和值。这是除了URI编码和打包之外的。这个过程很容易逆转。我是javascript ad jQuery新手,我只是觉得我在文档中遗漏了一些东西。我必须咬紧牙关,转向json“不,没有,也不可能”——肯定会有。只需在特定表单上调用(建议的)
反序列化()
方法,值就会返回到该表单。如果有多个元素具有相同的名称,则应按照序列化版本中重复项的顺序设置这些元素(与
.serialize()
的操作相反)。我已经在多个项目上成功地使用了这样一个函数(不是jQuery),但这取决于程序员来确保选择器是正确的…@nnnnnn。你说得对,可能有不安全的版本。但是jQuery(据我所知)没有不安全的函数。如果他愿意的话,他可以写第一个……非常感谢您花时间制作/链接。这在名称属性中使用方括号输入时失败,如
。使用
'[name=“'+name+']”]
来支持这样的输入。