![](/img/trans.png)
[英]jQuery - AJAX POST Request is giving a 500 Internal Server Error
[英]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用戶嘗試以下第二種方法:-
composer require barryvdh/laravel-cors
Barryvdh\\Cors\\ServiceProvider::class,
protected $middleware = [ \\Barryvdh\\Cors\\HandleCors::class, ];
php artisan vendor:publish --provider="Barryvdh\\Cors\\ServiceProvider"
希望這對您有所幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.