从序列化读取以填充表单

Read from serialize to populate form

本文关键字:填充 表单 读取 序列化      更新时间:2023-09-26

我在表单上执行了serialize()并保存了字符串,是否有任何函数可以将值从序列化字符串填充回表单?

以下是爆炸药丸答案的更新版本,并在应用的评论中添加了其他建议:

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

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

我建议您使用JSON,而不是序列化数据以使用javascript进行通信。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]);
});

根据之前的答案,如果您有复选框或单选按钮:

$.each(serialized.split('&'), function (index, elem) {
    var vals  = elem.split('=');
    var $elem = $formularioEquipo.find("[name='" + vals[0] + "']");
    var value = decodeURIComponent(vals[1].replace(/'+/g, ' '));
    if ($elem.is(':radio,:checkbox')) {
        $elem.prop('checked', ($elem.val() === value));
    } else {
        $elem.val(value);
    }
});