由axios向laravel发布请求,并给出500错误 [英] post request by axios to laravel giving 500 error

查看:190
本文介绍了由axios向laravel发布请求,并给出500错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将Laravel与Vue结合使用,并通过axios发出http请求.它给出了500错误. 我的请求代码是

I am using Laravel with Vue making http request with the axios. It is giving 500 error. My request code is

axios.post('user', {
       first_name: this.user.first_name,
       last_name: this.user.last_name,
       email: this.user.email,
       phone_number: this.user.phone_number,
       is_active: this.user.is_active,
       entity: this.user.entity,
       role_id: this.user.role_id
     })

Lavael路线是

Route::resource('user', 'UserController');

控制器是

public function store(Request $request)
{
    $this->validate($request, [
      'first_name' => 'required|max:255',
      'last_name' => 'required|max:255',
      'email' => 'required',
      'is_active' => 'required'
    ]);

    $user = User::create([
      'first_name' => request('first_name'),
      'last_name' => request('last_name'),
      'email' => request('email'),
      'is_active' => request('is_active'),
      'phone_number' => request('phone_number'),
      'role_id' => request('role_id')
    ]);

    return response()->json([
      'user' => $user,
      'message' => 'Success'
    ], 200);

}

推荐答案

您的存储方法正确.您只需要为axios发布请求指定正确的路径即可,这意味着您的组件方法应如下所示:

Your store method is correct. You just need to specify the correct path to your axios post request, which means your component method should be like this :

axios.post('/user/store', {
       first_name: this.user.first_name,
       last_name: this.user.last_name,
       email: this.user.email,
       phone_number: this.user.phone_number,
       is_active: this.user.is_active,
       entity: this.user.entity,
       role_id: this.user.role_id
     }).then((res) => {
          // here clear your form and fetch your users list if you want 
     })
       .catch(error => {
          // here catch error messages from laravel validator and show them 
     });

并且您的store方法应该返回验证器消息错误:

and your store method should return validator messages error :

public function store(Request $request)
{   
    $validator = Validator::make($request->all(), [
             'first_name' => 'required|max:255',
             'last_name' => 'required|max:255',
             'email' => 'required',
             'is_active' => 'required'
    ]);
    if ($validator->fails()) {
        return response()->json(['errors'=>$validator->errors()],422);
    }

    $user = User::create([
      'first_name' => $request('first_name'),
      'last_name' => $request('last_name'),
      'email' => $request('email'),
      'is_active' => $request('is_active'),
      'phone_number' => $request('phone_number'),
      'role_id' => $request('role_id')
    ]);

    return response()->json([
      'user' => $user,
      'message' => 'Success'
    ], 200);
}

这篇关于由axios向laravel发布请求,并给出500错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆