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

代码场景:切换头像图片
我用 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 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 6

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

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

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

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