从序列化读取到填充表单

时间:2012-01-27 15:34:54

标签: javascript jquery html webforms

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

3 个答案:

答案 0 :(得分:9)

以下是Explosion Pills答案的更新版本以及所应评论中的其他建议:

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

答案 1 :(得分:7)

查看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]);
});

答案 2 :(得分:0)

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

$.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);
    }
});