【问题标题】:Object serialize like form data serialize对象序列化,如表单数据序列化
【发布时间】:2018-08-14 13:20:57
【问题描述】:

我不确定我是否遗漏了某些东西,或者它不像我认为的那样工作。我有一些要拆分的表单数据。为此,我想我可以使用我想要的值创建另一个对象:

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.

再说一遍。我认为您可以像处理表单数据一样将对象序列化为字符串以进行数据存储。

有人可以向我解释我做错了什么和/或为什么序列化不起作用?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

answers 不是 jQuery 对象,因此它没有 serialize() 方法。如果您想像使用 jQuery 的序列化一样获得名称-值对字符串,那么您可以使用 jQuery's 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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 2014-12-10
    相关资源
    最近更新 更多