更改 Name: 的值,在序列化数组中的对象中

change the value of name: in an object in serialize array

本文关键字:数组 对象 序列化 Name 的值 更改      更新时间:2023-09-26

我正在这样做:

        var a_survey = $('#survey-1 :input').serializeArray();
        $.ajax({
            url: "/save_a_survey/",
            type: "post",
            data: a_survey,
            csrfmiddlewaretoken:'{{ csrf_token }}',
        });

哪个通过这个:

csrfmiddlewaretoken:6rS9oNMSJIzJw6ye8nCQZPRkjNemyMOD
form-1-student:12
form-1-behavior_type:Externalizer
form-1-surveyset:13

但我想将密钥的名称更改为:

csrfmiddlewaretoken:6rS9oNMSJIzJw6ye8nCQZPRkjNemyMOD
student:12
behavior_type:Externalizer
surveyset:13

这可能看起来是一个相当不错的黑客,但我正在处理 django 表单集并尝试一次保存它们的一部分;这听起来也像是一个黑客...

到目前为止,我已经尝试过这个:

    a_survey = $('#survey-1 :input').serializeArray();
    for (var i = 1; i <= a_survey.length; i++) {
        a_survey[i]['name'] = a_survey[i]['name'].replace(/form-'d-/g, "");
    };

但我不断得到...

TypeError: Cannot read property 'name' of undefined

感谢您的帮助

你的迭代中有一个逐一错误(JavaScript 数组从零开始)。

var a_survey = $('#survey-1 :input').serializeArray();
for (var i = 0; i < a_survey.length; i++) {
    a_survey[i].name = a_survey[i].name.replace(/form-'d-/g, "");
};
<小时 />

编辑:或者,您可以使用$.each(),根据@RobG的建议:

var a_survey = $('#survey-1 :input').serializeArray();
$.each(a_survey, function(i, item) {
    item.name = item.name.replace(/form-'d-/g, "");
});