axios.patch / axios.put在Vue和Laravel中不起作用

时间:2018-07-04 09:39:55

标签: laravel http vue.js axios

我的Vue文件中有此代码

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

以及在我的laravel控制器中

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.patch替换为axios.put,则会得到相同的结果。

--- 我尝试过的 ---

我已经尝试在与axios.post相同的情况下进行axios.getaxios.patch的工作,并且两者都正常工作。发布和获取的控制器:

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

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

1 个答案:

答案 0 :(得分:6)

实际上HTTP PUT不能被html标准识别。尝试像这样做hack:

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