gpt4 book ai didi

javascript - Laravel 6 中的 Ajax 删除给出 405(不允许的方法)

转载 作者:行者123 更新时间:2023-12-02 20:49:54 26 4
gpt4 key购买 nike

不明白为什么方法中一定会出错。我做错了什么? 我正在为 js 使用 Ziggy 路由

management.site.destroy:
domain: null
methods: ["DELETE"]
uri: "management/site/{id}"

控制台出现错误
删除http://localhost/blog/public/management/site 405(不允许的方法)
上面有按钮和js

<button type="button" name="ok_button" id="ok_button" class="btn btn-danger">OK</button>

JS

$(document).on('click', '#ok_button', (function (e) {
var product_id = $(this).val();
var token = $("meta[name='csrf-token']").attr("content");
$.ajax({
url: route('management.site.destroy',product_id),
beforeSend:function(){
$('#ok_button').text('Deleting...');
},
type: 'delete',
data: {'product_id':product_id,
'_token': token,},
success: function (data) {
setTimeout(function(){
$('#confirmModal').modal('hide');
alert('Data Deleted');
location.reload();
}, 2000);
}
});
}));

Controller :

    public function destroy($id)
{

$company_id = Auth::user()->company_id;
$item = Site::firstWhere(['company_id'=>$company_id,'id'=>$id]);
$item->delete();
return response()->json(['success' => 'Data is successfully Deleted']);
}

补丁等中的路线(编辑添加完整路线)工作正常

Route::group([ 'as'=>'management.','namespace' => 'Management', 'prefix' => 'management','middleware' => ['role:administrator'] ], function () {
Route::get('/', 'ManagementController@index');
Route::group(['as' => 'site.','prefix' => 'site'], function () {
Route::get('/','SiteController@index')->name('index');
Route::post('store','SiteController@store')->name('store');
Route::post('edit/{id}','SiteController@edit')->name('edit');
Route::get('edit/{id}','SiteController@edit')->name('edit');
Route::patch('','SiteController@update')->name('update');
Route::delete('{id}','SiteController@destroy')->name('destroy');
Route::get('{id}','SiteController@view')->name('view');
});

最佳答案

这是:

Route::delete('{id}','SiteController@destroy')

包裹在Route组中?

如果不是,那么您的 delete() 方法路由实际上将是 /{id} 而不是 management/site/{id}

<小时/>

在您的控制台中,运行 php artisan route:list 以显示您的应用程序的已注册路由的完整列表。然后检查您的删除方法的注册路由是什么。

<小时/>

编辑(第二轮)

所以注册的路线是:

| DELETE | management/site/{id} | management.site.destroy | App\Http\Controllers\Management\SiteController@destroy | web,role:administrator

这期望删除请求为http://localhost/management/site/{id}

但是,返回的错误表明请求发出的路径不正确:

DELETE http://localhost/blog/public/management/site 405 (Method Not Allowed)

很可能您在某处有一个相对路径,正在添加 URI 的 /blog/public/ 部分!

TLDR;

http://localhost/blog/public/management/site != http://localhost/management/site/{id}

关于javascript - Laravel 6 中的 Ajax 删除给出 405(不允许的方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61634054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com