web-dev-qa-db-ja.com

axios.patch / axios.putはVueおよびLaravel

vueファイルにこのコードがあります

saveProfile() {
    axios.patch('/api/pegawai/' + this.id, {
         data: this.data
    })
    .then(function (response) {
         console.log(response);
    })
    .catch(function (error) {
         console.log(error);            
    });
}

そして、my laravel controller

public function update(Request $request, $id){
     return $this->sendResponse('request retrieved');
}

public function sendResponse($message){
    $response = [
        'success' => true,
        'message' => $message,
    ];
    return response()->json($response, 200);
}

vueファイルを実行してデータをコントローラーに渡すとき)それが必要次の値でブラウザーコンソールにjson応答を返します

{
  'success' : true,
  'message' : 'request retrieved'
}

しかし、現在はそれが与えられますブラウザコンソールを介して500 internal server errorエラーが発生します。 axios.patchaxios.putに置き換えても同じ結果になります。

---私が試したこと---

axios.postと同じシナリオでaxios.getaxios.patchを実行しようとしましたが、両方とも正常に動作しています。 postおよびgetのコントローラー:

public function store(Request $request){
    return $this->sendResponse('request retrieved');
}

public function index(){  
    return $this->sendResponse('request retrieved');
}
7
Rafid

実際にHTTP PUTは、HTML標準では認識されません。次のようにハックしてみてください:

saveProfile() {
    axios.post('/api/pegawai/' + this.id, {
         data: this.data,
         _method: 'patch'
    })
    .then(function (response) {
         console.log(response);
    })
    .catch(function (error) {
         console.log(error);            
    });
}
8
Hassanal Shah