我这样做:
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 formsets并试图一次保存它们的碎片;这也可能听起来像是黑客......
到目前为止,我已经尝试过这个:
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
感谢您的帮助
答案 0 :(得分:2)
你的迭代中有一个一个一个错误(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, "");
};
编辑:或者,您可以根据@ RobG的建议使用$.each()
:
var a_survey = $('#survey-1 :input').serializeArray();
$.each(a_survey, function(i, item) {
item.name = item.name.replace(/form-\d-/g, "");
});