嗨,我正在尝试根据具有“已更改”数据集的元素创建动态 ajax 请求数据数组。
我已经成功添加了额外的索引,但它只添加了最后一个索引。我需要推动每一项。我只是不确定我错过了什么。
let payload = {
UpdateID: {
Table: `newton_manual_loads`,
Code: `nml`,
Rows: {},
Where: `nml_id = ` + LoadID
}
};
let Changed = $(`[data-changed='true']`);
Changed.each(function (ix, element) {
let id = $(element).attr(`id`);
let value = $(element).val();
payload.UpdateID.Rows = { [id]: value };
console.log(id + `:` + value);
});
console.log(payload);
payload = JSON.stringify(payload);
$.ajax(`/libraries/ajax/Update.ajax.php`, {
type: `POST`,
data: { payload: payload },
success: function (data) {
/*rest of code*/
});
这段代码的输出是
并且
Row:{}
的输出需要是
nml_pod_number:20
nml_loading_gross_weight:600
nml_loading_nett_weight:15
}
但它只是添加最后一个
每次迭代都会覆盖相同的值:
payload.UpdateID.Rows = { [id]: value };
因此之前的所有值都会丢失。您可以通过将以前的值包含在作业中来保留它们:
payload.UpdateID.Rows = { ...payload.UpdateID.Rows, [id]: value };
或者,不进行赋值,只需添加属性:
payload.UpdateID.Rows[id] = value;