向后端获取随机一张图片,会出现重复情况

代码场景:切换头像图片
我用ajax向后端获取一张和原来不一样的图片
但是偶偶就会出现获取到重复图片的现象,是后端逻辑有问题吗?

var isAjax=false
var img = document.getElementById('bg_img')
jQuery(document).ready(function(){
    jQuery('#bg_img').click(function(e){
                if(isAjax){
                    return;
                }
                isAjax=true;
                e.preventDefault();
                jQuery.ajax({
                    url: "{{ route('bg.change') }}",
                    data:{
                        img:"{{$bg_img}}"
                    },
                    method: 'post',
                    success: function(result){
                        if(result != ''){
                           isAjax=false
                           console.log('新图片'result);
                        }
                    }
                });
            });
        });
public function bg_change(Request $request)
    {
        $img = $this->randImg($request->img);
        return $img;
    }

    public function randImg($img){ 
        $imgs= [
            '/img/bg1.jpg',
            '/img/bg2.jpg',
            '/img/bg3.jpg',
            '/img/bg4.jpg',
            '/img/bg5.jpg',
        ];
        //随机获取一张图片
        $new = array_rand($imgs,1);
        //如果和原来的图片一样就获取这张图后面一张
        if($img == $imgs[$new]){
            return $imgs[$new+1];
        }else{
            return $imgs[$new];
        }
    }

感觉应该是原来blade模板里的变量没有改变的问题,已换方法

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 6

return $imgs[$new+1]; 不会报错吗

3年前 评论
AegisforPhP (楼主) 3年前
AegisforPhP (楼主) 3年前
php_yt (作者) 3年前
AloneUtopia

$imgs[$new+1]; 这样写,如果索引不存在时 ,你也没报错的话 ,那值应该是null 吧。 是不是跟这个有关系呢?

3年前 评论
AegisforPhP (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!