jQuery序列化有反函数吗?

neskvpey  于 2023-03-29  发布在  jQuery
关注(0)|答案(3)|浏览(155)

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

toiithl6

toiithl61#

简短回答:,没有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;
}

(A)顶部的reset是可选的。您可能希望首先重置字段值,或者可能希望使用以下方法清除它们:https://stackoverflow.com/a/6786237/1766230
(B)请参阅https://stackoverflow.com/a/24417399/1766230了解为什么需要替换+
(C)有关decodeURIComponent的信息,请参阅Mozilla Developer Javascript Reference
(Note:如果您使用.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/

e7arh2l6

e7arh2l62#

不,没有。
你怎么知道要修改哪个DOM元素呢?可能有相同的元素,但它们的名字不同,等等。
parseJSON可以帮助您:
jQuery.parseJSON(json)返回:对象
说明:接受格式良好的JSON字符串并返回结果JavaScript对象。

bnlyeluc

bnlyeluc3#

这里是:

a=$('.price_analysis input').serializeArray();
aa={};
for (var i in a) {
    aa[a[i].name] = a[i].value;
}
alert( JSON.stringify(aa));

相关问题