计算机网络/计算机科学与应用/系统/运维/开发

ThinkPHP5.1 ajax捕获异常


前端ajax

 var data = $("#form").serializeArray();
            $.ajax({
                type:"post",
                url:"{:url('article/doEdit')}",
                data:data,
                dataType:'json',
                success:function(res){
                    console.log(6)
                    console.log(res)
                    if(res.status == 1){
                        layer.msg(res.msg,{ offset: '100px' });
                        setTimeout(function(){
                            window.location.href = res.url;
                        },2000);
                    }else{
                        layer.msg(res.msg,{ offset: '100px' });
                        captcha();
                    }
                }, error:function(XMLHttpRequest, textStatus, errorThrown){
                    layer.alert(XMLHttpRequest.status,{icon:2});
                    console.log(XMLHttpRequest.status);
                    console.log(XMLHttpRequest.readyState);
                    console.log(textStatus);
                }
            });
            return false;


PHP后端捕获异常:

如果后端接受到的数据类型错误时,为了让ajax直观显示错误

image.png

直接使用try..catch(\Exception $e)...捕获异常直接显示给前端

public function doEdit($id = 0)
{
        if(request()->isPost()){
            $data = input('post.');
            $data['update_time'] = time();
            try {
                $result = $this->obj->allowField(true)->save($data,$data['id']);
            }catch (\Exception $e) {
                return json(['status'=>0,'msg'=>$e->getMessage()]);
            }
            if($result){
                return json(['status'=>1,'msg'=>'文章更新成功','url'=>$_POST['httpref']]);
            }else{
                return json(['status'=>0,'msg'=>'文章更新失败']);
            }
        }
}


生活的强者,不是指能搞定一切困难,也不是指没有恐惧,而是就算心里藏着无尽的疲惫和委屈,还是会认真地做好手头上的事情;就算自己被生活锤得心灰意冷,还是会尽心尽力地负起责任;就算发现现实与理想的差距有十万里,虽然鞭长莫及,却依然马不停蹄。

评论

^