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

购物车折扣输入框修改时全部产品同步更新的问题修复咨询

问题分析与解决方案

问题根源

你的代码虽然获取了当前修改的输入框$this,但后续冗余的逻辑错误收集了所有折扣输入框的值,且未正确仅传递当前修改的输入框数据,导致后端收到所有产品的折扣信息,进而同步更新全部产品折扣。

修改后的代码

$(function() {
    $(document).on('input', '.dto', function(e){
        e.preventDefault();
        const $this = $(this);
        // 仅序列化当前触发修改的输入框,生成对应name和value的请求数据
        const formData = $this.serializeArray();

        const url = "update_cart.ini.php";

        $.ajax({
            url: url,
            type: "POST",
            data: formData,
            cache: false,
        })
        .done(function(data) {
            const res = JSON.parse(data);
            if(res.status){
                $('.alert-success').fadeIn();
                $('.alert-success').html(res.message).delay(2000).fadeOut(2000);
            } else {
                $('.alert-danger').fadeIn();
                $('.alert-danger').html(res.message).delay(2000).fadeOut(2000);
            }
        })
        .fail(function( jqXHR, textStatus ) {
            // 保留调试代码方便问题排查(按需启用)
            // alert("Ajax Request fail");
            // console.log(jqXHR.responseText);
            // console.log("Request failed: " + textStatus );
        })
    });
});

关键修改点

  • 移除遍历所有dtoupdate输入框的冗余代码,不再收集全部产品折扣值
  • 使用const声明局部变量$this和formData,避免全局变量污染
  • 仅序列化当前触发事件的输入框,确保Ajax请求只携带当前修改的产品折扣数据

额外提示

后端update_cart.ini.php需要支持识别单个dtoupdate[xxx][...]格式的参数(其中xxx为产品ID,比如输入框name中的3、6、10),并仅更新对应ID的产品折扣,确保后端逻辑与前端请求匹配。

内容的提问来源于stack exchange,提问作者J. Mick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:25:18