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

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'=>'文章更新失败']);
            }
        }
}


顺,不妄喜;逆,不惶馁;安,不奢逸;危,不惊惧。--史记

评论

^