Javascript 从序列化读取以填充表单
我在表单上执行了Javascript 从序列化读取以填充表单,javascript,jquery,html,webforms,Javascript,Jquery,Html,Webforms,我在表单上执行了serialize()并保存了字符串,是否有任何函数可以将值从序列化字符串填充回表单?签出 我建议您使用JSON,而不是序列化与javascript通信的数据。PHP应该有json\u encode()和json\u decode()来帮助实现这一点,javascript还内置了json处理函数,您甚至不需要这些函数。例如,如果$.getJSON从服务器获取有效的JSON字符串,它将自动转换为javascript对象 编辑:假设您谈论的是jQuery的$.serialize(),
serialize()
并保存了字符串,是否有任何函数可以将值从序列化字符串填充回表单?签出
我建议您使用JSON
,而不是序列化与javascript通信的数据。PHP应该有json\u encode()
和json\u 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('=');
$("[name='" + vals[0] + "']").val(decodeURIComponent(vals[1].replace(/\+/g, ' ')));
});
根据前面的答案,如果您有复选框或单选按钮:
$.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);
}
});
他/她没有提到服务器端。它可能只是客户端而已(OP只是序列化了表单,然后想使用它)。@tandu这是一个很好的答案:)有点小麻烦;它将“@”符号替换为“%40”,您必须手动替换它们:
.val(decodeURIComponent(vals[1].replace(/\+/g)”);
只是为了澄清一点:您指的是jQuery,而不是某些服务器端函数(如PHP)?此解决方案不适用于我的复选框。if($elem.is(':radio,:checkbox'))总是返回错误。有什么建议吗?