簡體   English   中英

由axios向laravel發布請求,並給出500錯誤

[英]post request by axios to laravel giving 500 error

我正在將Laravel與Vue一起使用axios發出http請求。 它給出了500錯誤。 我的請求代碼是

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
     })

熔岩路線現為

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發布請求指定正確的路徑,這意味着您的組件方法應如下所示:

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方法應該返回驗證器消息錯誤:

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);
}

嘗試更改以下代碼塊:

$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')
]);

替換為以下內容:

$user = User::create([
  'first_name' => $request->input('first_name'),
  'last_name' => $request->input('last_name'),
  'email' => $request->input('email'),
  'is_active' => $request->input('is_active'),
  'phone_number' => $request->input('phone_number'),
  'role_id' => $request->input('role_id')
]);
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(response => { 
    console.log(response)
 })
 .catch(error => {
   console.log(error.response)
 });

請嘗試使用此代碼,並始終使用error.response控制台記錄您的錯誤,以獲取具有完整錯誤詳細信息的所有信息和對象。 在chrome控制台中檢查是否已將所有來自表單的POST數據正確傳遞到數據庫。 以我為例,我發現我的電話字段由於拼寫錯誤而沒有通過。 我的控制台錯誤圖像文件

或者您可以為laravel用戶嘗試以下第二種方法:-

  1. composer require barryvdh/laravel-cors
  2. 將Cors \\ ServiceProvider添加到config / app.php提供程序的數組Barryvdh\\Cors\\ServiceProvider::class,
  3. 要允許所有路線使用CORS,請在app / Http / Kernel.php的$ middleware屬性中添加HandleCors中間件。protected protected $middleware = [ \\Barryvdh\\Cors\\HandleCors::class, ];
  4. php工匠供應商:發布--provider =“ Barryvdh \\ Cors \\ ServiceProvider” php artisan vendor:publish --provider="Barryvdh\\Cors\\ServiceProvider"

希望這對您有所幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM