从序列化读取到填充表单

发布于 2024-12-29 08:43:47 字数 74 浏览 0 评论 0原文

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

I did serialize() on my form and saved the string, is there any function which can populate values back to the form from serialized string?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

善良天后 2025-01-05 08:43:47

这是爆炸丸答案的更新版本,并应用了评论中的附加建议:

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

Here is the updated version of Explosion Pills' answer with the additional suggestions in the comments applied:

$.each(serialized.split('&'), function (index, elem) {
   var vals = elem.split('=');
   $("[name='" + vals[0] + "']").val(decodeURIComponent(vals[1].replace(/\+/g, ' ')));
});
夜夜流光相皎洁 2025-01-05 08:43:47

我建议查看 http://phpjs.org/functions/unserialize:571

而不是序列化数据为了与 JavaScript 进行通信,您可以使用 JSON。 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]);
});

Check out http://phpjs.org/functions/unserialize:571

I recommend instead of serializing data for communication with javascript, you use JSON. PHP should have json_encode() and json_decode() to help with this, and javascript also has built in JSON handling functions, which you may not even need. For example, if $.getJSON gets a valid JSON string from the server, it will be transformed into a javascript object automatically.

EDIT: assuming you are talking about jQuery's $.serialize(), that I know of there's no function to undo this (I'm not even sure why that would ever be necessary..) but this should work:

$.each(serialized.split('&'), function (index, elem) {
   var vals = elem.split('=');
   $("[name='" + vals[0] + "']").val(vals[1]);
});
幸福还没到 2025-01-05 08:43:47

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

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

Based on previous answers, if you have checkbox or radio buttons:

$.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);
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文