小白在项目中的增删改查错误逻辑(贰)

项目场景:

XXX仓库货物进出记录清单之记录员添加、查找、修改、删除(谨慎使用)【增删改查】

问题描述:

前面我们说到了登录(注册)中的bug,在记录人员进行清单的添加、查找、修改、删除时,在记录员填写信息时,出现错误信息也进行了清单的添加、查找、修改(错误信息也发送了ajax请求),在记录员做这些前我们的程序是需要做一些逻辑判断,不能出现错误信息,这里我们就用简单的人员简单信息清单举例,在清单中人员姓名不能出现字母、数字、非法字符等(这里按照中国人人名来,后面同理【请杠精注意不要说外国人名哦 ,^ _ ^】),性别不能是除了‘男’、‘女’汉字的其它汉字、字母、数字等等。我们已查询为例,这里因为逻辑比较多。
在使用查询时我能通过其中一项查询、两项查询和多项查询。
数据代码:

//分类查询
$('.chaxunbtn').on('click',function(){
    // 查询面板隐藏   分页出现
    select();
    $('.fenye').css({display:'block'});
    $('.onbtn').attr({disabled:false}).css({background:'gre'});
    $('.chaxun').css({display:'none'});


    var objarr = {
        name : $('.Name').val(),
        age : $('.Age').val() ,
        sex : $('.Sex').val()
    }
    function sex(){
        if(objarr.sex == '男'){
            return '0';
        }else if(objarr.sex == '女'){
            return '1';
        }else{
            return '';
        }    
    }
    var sexname = sex();
    // console.log(objarr);
    if(objarr.name == '' && objarr.age == "" && objarr.sex == ""){
        $(".content").html('');
    }else{
        $('.Name').val('');
        $('.Age').val('');
        $('.Sex').val('');
        $.ajax({
            type: "GET",
            url: "http://101.37.175.185:3000/index_getdata",
            data: {
                uname: uName
            },
            dataType: 'JSON',
            success: function (data) {
                var obj = data;
                // console.log(letdata);
                var str = "";
                function Str(){
                    if(i >=(10*(x-1))&&i <(10*x) &&i<=obj.data.length){
                        str += `<ul data= "${obj.data[i].pid}">
                        <li>${obj.data[i].name}</li>
                        <li>${obj.data[i].sex == 0 ? '男' : '女'}</li>
                        <li>${obj.data[i].age}</li>
                        <li>${obj.data[i].mail}</li>
                        <li>${obj.data[i].phone}</li>
                        <li><input class="del" type="button" value="删除" />
                        <input class="xiu" type="button" value="修改" /></li>
                        </ul>`;
                    }
                }
                var namearr =[];
                var sexarr = [] ;
                var agearr =[];
                for (var i in obj.data) {
                    if(objarr.name ==''){
                        namearr[i] = obj.data[i].name; 
                    }else{
                        namearr[i] = objarr.name;
                    }
                    if(objarr.sex ==''){
                        sexarr[i] = obj.data[i].sex; 
                    }else{
                        sexarr[i] = sexname;
                    }
                    if(objarr.age ==''){
                        agearr[i] = obj.data[i].age; 
                    }else{
                        agearr[i] = objarr.age;
                    }
                    if((obj.data[i].name == namearr[i])&& (sexarr[i] == obj.data[i].sex)&&(agearr[i] == obj.data[i].age)){
                        Str();
                        letdata.push(obj.data[i]);
                    }    
                }
                $(".content").html(str);
                
            }
        });
    }
})

原因分析:

通过分析这是和登录、注册时一样的逻辑错误,因为验证是否为空了,所以就发送请求。而我们在这里也是需要进行多次逻辑判断,因为少了步骤所以会出现没有通过验证时,错误的数据也会发生程序请求导致我们能成功操作。

解决方案:

通过代码分析我们可以明显看到在ajax请求前的逻辑少了判断,同理我们只需在是否全部非空判断过后进行更严格的正则判断,第一步验证是否全部为空,第二步非空通过后验证是否通过单项、双项或多项查找,所以在单项查找时其它项为空必须通过,两项查找时同理,通过精确查找时则需要全部通过验证。 注意:因为在使用查询时我能通过其中一项查询、两项查询和多项查询,所以要多次判断。 代码:
//分类查询
$('.chaxunbtn').on('click',function(){
    // 查询面板隐藏   分页出现
    // select();
    var objarr = {
        name : $('.Name').val(),
        age : $('.Age').val() ,
        sex : $('.Sex').val()
    }
    function sex(){
        if(objarr.sex == '男'){
            return '0';
        }else if(objarr.sex == '女'){
            return '1';
        }else{
            return '';
        }    
    }
    var sexname = sex();
    //验证非空
    if(objarr.name == '' && objarr.age == "" && objarr.sex == ""){
        $('#contents').css({display:'block'});
        $('.chaxun').css({display:'none'});
        // select()
    }else{
    //通过非空验证后 
        if(regname.test(objarr.name)  ||  objarr.name == ""){
            if(regsex.test(objarr.sex) || objarr.sex == ""){
                if(regage.test(objarr.age) || objarr.age == ""){
                    $.ajax({
                        type: "GET",
                        url: "http://101.37.175.185:3000/index_getdata",
                        data: {
                            uname: uName
                        },
                        dataType: 'JSON',
                        success: function (data) {
                            var obj = data;
                            // console.log(letdata);
                            var str = "";
                            function Str(){
                                if(i >=(10*(x-1))&&i <(10*x) &&i<=obj.data.length){
                                    str += `<ul data= "${obj.data[i].pid}">
                                    <li>${obj.data[i].name}</li>
                                    <li>${obj.data[i].sex == 0?'男':'女'}</li>
                                    <li>${obj.data[i].age}</li>
                                    <li>${obj.data[i].mail}</li>
                                    <li>${obj.data[i].phone}</li>
                                    <li><input class="del" type="button" value="删除" />
                                    <input class="xiu" type="button" value="修改" /></li>
                                    </ul>`;
                                }
                            }
                            var namearr =[];
                            var sexarr = [] ;
                            var agearr =[];
                            for (var i in obj.data) {
                                if(objarr.name ==''){
                                    namearr[i] = obj.data[i].name; 
                                }else{
                                    namearr[i] = objarr.name;
                                }
                                if(objarr.sex ==''){
                                    sexarr[i] = obj.data[i].sex; 
                                }else{
                                    sexarr[i] = sexname;
                                }
                                if(objarr.age ==''){
                                    agearr[i] = obj.data[i].age; 
                                }else{
                                    agearr[i] = objarr.age;
                                }
                                if((obj.data[i].name == namearr[i])&& (sexarr[i] == obj.data[i].sex)&&(agearr[i] == obj.data[i].age)){
                                    Str();
                                    letdata.push(obj.data[i]);
                                }    
                            }
                            $(".content").html(str);
                        
                        }
                    });
                    $('.Name').val('');
                    $('.Age').val('');
                    $('.Sex').val('');
                    $('.chaxun').css({display:'none'});
                    $('.anniu').css({display:'none'});
                     $(".fanhui").css({display:'block'}); 
                     $('.fenye').css({display:'block'});
                }else{
                    $('.Age1').eq(0).text('年龄不符合规范,只能为数字').css({color:'red'})
                }
            }else{
                $('.Sex1').eq(0).text('性别不符合规范,只能是男或女').css({color:'red'})
            }
        }else{
            $('.Name1').eq(0).text('姓名不符合规范').css({color:'red'})
        }
    }
})
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值