javascript - 对象序列化,如表单数据序列化
问题描述
我不确定我是否遗漏了某些东西,或者它不像我认为的那样工作。我有一些要拆分的表单数据。为此,我想我可以使用我想要的值创建另一个对象:
let data = $('form').serializeArray();
let answers = {};
data.forEach(function(element) {
// check if the element contains a answer input value
if(element.name.indexOf('answer') !== -1) {
answers[element.name] = element.value;
}
});
console.log($('form').serialize());
// output: answer%5B1%5D=1&answer%5B2%5D=2&answer%5B4%5D=3&answer%5B3%5D=4&sort=relevance&query=&area=..... etc
console.log(answers.serialize());
// output: is not a function.
再说一遍。我认为您可以像处理表单数据一样将对象序列化为字符串以进行数据存储。
有人可以向我解释我做错了什么和/或为什么序列化不起作用?
解决方案
answers
不是 jQuery 对象,所以它没有serialize()
方法。如果您想像使用 jQuery 的序列化一样获得名称-值对字符串,那么您可以使用jQuery 的 param方法
answers = {
"answer1":1,
"answer2":2
};
console.log(jQuery.param(answers));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
否则,如果您只是想序列化为answers
JSON,以便以后可以重新创建它,那么您只需使用JSON.stringify
answers = {
"answer1":1,
"answer2":2
};
console.log(JSON.stringify(answers));
推荐阅读
- mysql - 对表进行子集化,以便样本正态分布在列中的值周围
- php - foreach 数组 PHP 中列的 SUM 不起作用
- node.js - Mongoose .populate 未在 JSON 中显示
- flutter - Flutter API 从一个屏幕获取数据并将其发送到另一个屏幕
- kubernetes - Kubernetes 容器启动前执行脚本
- sitefinity - sitefinity 在数据库中创建一个 unscribers 表
- ios - 在 iOS 中同时将音频从手机麦克风传输到蓝牙耳机扬声器,从蓝牙耳机麦克风传输到手机扬声器
- python - 如何在 ssystem 仿真模式下在 gem5 上移植 maddpg 强化学习算法(se)
- selenium - Selenium Select Frame 需要很长时间才能完成
- websocket - Blazor Server 多个选项卡 websocket 问题