You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AJAX提交前动态构建请求数据对象,仅保留最后一项问题求助

问题解决:动态构建AJAX请求的Rows对象

你的问题出在循环里的这行代码:

payload.UpdateID.Rows = { [id]: value };

每次循环都会完全替换Rows对象,把它变成只包含当前元素键值对的新对象,之前添加的内容自然就被覆盖了,最终只会保留最后一个元素的数据。

要解决这个问题,你需要给已有的Rows对象新增属性,而不是替换整个对象,把上述代码改成:

payload.UpdateID.Rows[id] = value;

修正后的完整代码如下:

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*/
    }
});

这样循环时就会把每个符合条件的元素的键值对都添加到Rows对象里,最终就能得到你期望的包含多个键值对的结构。

内容的提问来源于stack exchange,提问作者Madeline Kallis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:46:01