我使用Laravel作为Backend并通过JSON生成API,我使用php来获取json数据并通过laravel中的路由api删除数据,但它似乎无法正常工作。 laravel中的API路径
Route::delete('articles/{article}', 'ArticleController@delete');
我的控制器
public function delete(Article $article)
{
$article->delete();
return response()->json(null);
}
我的API网址
http://192.168.0.21/api/articles/id
我的PHP前端代码删除
$json = file_get_contents('http://192.168.0.21/api/articles/' . $id);
$json_data = json_decode($json, true);
unset($json_data['id']);
这些解决方案?
答案 0 :(得分:2)
您将路由方法设置为DELETE但是您正在使用GET的file_get_contents请求它。
你需要使用curl:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://192.168.0.21/api/articles/' . $id);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$result = json_decode($result);
curl_close($ch);
答案 1 :(得分:2)
<强>路线强>
在您要删除的记录的{id}
,ID中传递ID。
Route::delete('articles/{id}', 'ArticleController@delete');
<强> ArticleController 强>
public function delete($id) {
$article = Article::findOrFail($id);
if($article)
$article->delete();
else
return response()->json(error);
return response()->json(null);
}
AJAX CALL
$.ajax({
url: BASE_URL + '/articles/'+ id,
type: 'DELETE',
})
.done(function() {
console.log("success");
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});