我一直在嘗試isdisabled使用 AJAX onclick為我的資料庫中的一個值創建更新狀態,該值從 0 到 1。這是我的代碼:
index.blade.php :
$('body').on('click', '.disableMediaOrder', function(){
var id = $(this).data("id");
confirm("Are you sure you want to disable this ?");
$.ajax({
url: "{{ route('media-order.disable') }}" '/' id,
method: "GET",
success: function (data){
tableMediaOrder.draw();
},
error: function (data) {
console.log('Error:', data);
}
});
});
控制器 :
public function index(Request $request)
{
if ($request->ajax()) {
$data = MediaOrder::get();
return DataTables::of($data)
->addIndexColumn()
->addColumn('action',function($row){
$btn = '<a href="javascript:void(0)" id="editMediaOrder" data-toggle="tooltip" data-id="'.$row->id.'" data-original-title="Edit" value="{{ csrf_token() }}">Edit</a>';
$btn = $btn.' <a href="javascript:void(0)" data-toggle="tooltip" data-id="'.$row->id.'" data-original-title="Delete" value="{{ csrf_token() }}">Delete</a>';
$btn = $btn.' <a href="javascript:void(0)" data-toggle="tooltip" id="disableMediaOrder" data-id="'.$row->id.'" data-original-title="Delete" value="{{ csrf_token() }}">Disable</a>';
return $btn;
})
->rawColumns(['action'])
->make(true);
} else {
$groups = Group::all();
$media_order = DB::table('media_order')->get();
$moo = MediaOrder::orderBy('nomor','asc')->get();
$users = User::orderBy('name', 'asc')->get();
return view('media-order.index')->with(compact('users','moo','groups'));
}
}
public function disable(Request $request, $id)
{
DB::unprepared('SET IDENTITY_INSERT media_order ON');
MediaOrder::updateOrCreate(['id'=> $request->id],
[
'isdisabled' => 1,
]);
DB::unprepared('SET IDENTITY_INSERT media_order OFF');
if ($request->ajax()){
return redirect_ajax_notification('media-order.index');
}else{
return redirect_ajax('media-order.index');
}
}
這是我的路線:
Route::post('/MediaOrder/disable', 'MediaOrderController@disable')->name('media-order.disable');
可悲的是它出現了'NotFoundHTTPException;' 也許有人可以幫助我解決這個問題。
uj5u.com熱心網友回復:
您收到 404 是因為您使用的 URL 沒有設定路由:
url: "{{ route('media-order.disable') }}" '/' id,
這會生成一個像/MediaOrder/disable/X. 但是您沒有匹配的路線,您擁有的路線將適用于/MediaOrder/disable.
像這樣更新你的路線:
Route::post('/MediaOrder/disable/{id}', 'MediaOrderController@disable')->name('media-order.disable');
并像這樣更新您的 JS(簡單選項,不使用route()):
url: "/MediaOrder/disable/" id,
如果要使用route()生成 URL,則需要進行更復雜的替換,因為我們無法id從 Blade 中訪問 JS變數{{ }}。你可以試試:
$('body').on('click', '.disableMediaOrder', function(){
var id = $(this).data("id");
confirm("Are you sure you want to disable this ?");
// First generate the route with a dummy text placeholder
let url = "{{ route('media-order.disable', ['id' => ':id']) }}";
// Now replace the placeholder with the real value
url = url.replace(':id', id);
$.ajax({
url: url,
// ... rest of your code
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/347668.html
上一篇:jQueryajax呼叫getAPI回傳Task<ActionResult<List<ApiObject>>>不斷收到500錯誤回應
