Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从序列化读取以填充表单_Javascript_Jquery_Html_Webforms - Fatal编程技术网

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'))总是返回错误。有什么建议吗?