因为aid分配不均而出现的“功能失效”BUG

问题篇:修改了一个因为"后端给前端提供的aid,需要分配给多个'需要aid的方法'使用,而出现的aid分配不均,只能给第一个所接收,而后面两个不能出现效果的BUG"{解决方法:给多个'需要aid的方法'不同的id值,再把循环查找后端数据的aid,都个分配给他们每个id,使他们每个都有aid,就解决了,具体看代码解析}(已经解决bug)

问题图片:

原来的BUG代码:

/**展示用户收货地址数据列表*/
  function showAddressList() {
        $("#address-list").empty();
        $.ajax({
            url: "/addresses",
            type: "get",
            //data:
            dataType: "JSON",
            success: function (json) {
                if (json.state == 200) {
                    var list = json.data;
                    console.log(list);//调试用
                    for (var i = 0; i < list.length; i++) {
                        //先写一个var tr = ''; 然后去上面的地址展示中找一个tr标签复制粘贴到单引号里面,再删去多余的制表符
                        var tr = '<tr>\n' +
                            '<td>#{tag}</td>\n' +
                            '<td>#{name}</td>\n' +
                            '<td>#{address}</td>\n' +
                            '<td>#{phone}</td>\n' +
                            '<td><a onclick="updateAddress(#{aid})" class="btn btn-xs btn-info"><span class="fa fa-edit"></span> 修改</a></td>\n' +
                            '<td><a onclick="deleteAddressByAid(#{aid})" class="btn btn-xs add-del btn-info"><span class="fa fa-trash-o"></span> 删除</a></td>\n' +
                            '<td><a onclick="setDefault(#{aid})" class="btn btn-xs add-def btn-default">设为默认</a></td>\n' +
                            '</tr>';
                        //href="updateAddress.html" --跳转页面
                        //下面用正则表达式更改字符串,上面的#{tag}#{name}等等只
                        //是占位符,没有任何意义,我也可以把#{tag}写成任何想写的东西
                        //replace的第一个参数/占位符/g可以,"占位符"也可以
                        tr = tr.replace(/#{tag}/g, list[i].tag);
                        tr = tr.replace(/#{name}/g, list[i].name);
                        tr = tr.replace("#{address}", list[i].address);
                        tr = tr.replace("#{phone}", list[i].phone);
                        tr = tr.replace("#{aid}", list[i].aid);  //给这个表单,的"修改、删除、设置默认"赋值aid
                
                        $("#address-list").append(tr);
                    }

                    //用hide方法将第一个收货地址的"设为默认"元素隐藏,.add-def:eq(0)表
                    //现示第一个class为add-def的标签,这样就可以保证隐藏的是第一个收货地址
                    $(".add-def:eq(0)").hide();
                } else {
                    <!--这个其实永远不会执行,因为没有编写
                    异常,控制层返回的状态码永远是OK-->
                    alert("用户收货地址数据加载失败")
                }
            }
        });
    }

解决思路:

  • 问题: tr = tr.replace("#{aid}", list[i].aid); // 一个aid不能给这个表单,的"修改、删除、设置默认"(三个按键)都赋值aid

  • 所以解决方法很简单,分别给"修改、删除、设置默认"都赋值一个aid,就解决了

  • 他们都需要aid,但是又不能只给一个aid,就都赋值,就解决问题啦

修改后的代码块:

/**展示用户收货地址数据列表*/
    function showAddressList() {
        $("#address-list").empty();
        $.ajax({
            url: "/addresses",
            type: "get",
            //data:
            dataType: "JSON",
            success: function (json) {
                if (json.state == 200) {
                    var list = json.data;
                    console.log(list);//调试用
                    for (var i = 0; i < list.length; i++) {
                        //先写一个var tr = ''; 然后去上面的地址展示中找一个tr标签复制粘贴到单引号里面,再删去多余的制表符
                        var tr = '<tr>\n' +
                            '<td>#{tag}</td>\n' +
                            '<td>#{name}</td>\n' +
                            '<td>#{address}</td>\n' +
                            '<td>#{phone}</td>\n' +
                            '<td><a onclick="updateAddress(#{aid_updateAddress})" class="btn btn-xs btn-info"><span class="fa fa-edit"></span> 修改</a></td>\n' +
                            '<td><a onclick="deleteAddressByAid(#{aid_deleteAddressByAid})" class="btn btn-xs add-del btn-info"><span class="fa fa-trash-o"></span> 删除</a></td>\n' +
                            '<td><a onclick="setDefault(#{aid_setDefault})" class="btn btn-xs add-def btn-default">设为默认</a></td>\n' +
                            '</tr>';
                        //href="updateAddress.html" --跳转页面
                        //下面用正则表达式更改字符串,上面的#{tag}#{name}等等只
                        //是占位符,没有任何意义,我也可以把#{tag}写成任何想写的东西
                        //replace的第一个参数/占位符/g可以,"占位符"也可以
                        tr = tr.replace(/#{tag}/g, list[i].tag);
                        tr = tr.replace(/#{name}/g, list[i].name);
                        tr = tr.replace("#{address}", list[i].address);
                        tr = tr.replace("#{phone}", list[i].phone);
                        tr = tr.replace("#{aid_updateAddress}", list[i].aid);  //给这个表单的 --"修改"按键-- 赋值aid
                        tr = tr.replace("#{aid_deleteAddressByAid}", list[i].aid);//给这个表单的 --"删除"按键-- 赋值aid
                        tr = tr.replace("#{aid_setDefault}", list[i].aid);   //给这个表单的 --"设置默认"按键-- 赋值aid

                        $("#address-list").append(tr);
                    }

                    //用hide方法将第一个收货地址的"设为默认"元素隐藏,.add-def:eq(0)表
                    //现示第一个class为add-def的标签,这样就可以保证隐藏的是第一个收货地址
                    $(".add-def:eq(0)").hide();
                } else {
                    <!--这个其实永远不会执行,因为没有编写
                    异常,控制层返回的状态码永远是OK-->
                    alert("用户收货地址数据加载失败")
                }
            }
        });
    }

posted on 2023-01-18 22:05  陈嘻嘻-  阅读(33)  评论(0编辑  收藏  举报

导航