我在表单上做了serialize()
并保存了字符串,是否有任何函数可以将值从序列化字符串填充回表单?
答案 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);
}
});