やりたいこと
aljaxでタスクコントローラーのdelete関数を実行したいです。
しかし、Chromeの開発者ツールのコンソールに、「Unexpected token < in JSON at position 0」というエラーが出る。
試したこと
- 渡したい値のidがjson形式と認識されていないのかと思い、JSON.stringify()をつけてみたが、同じエラーが出た。
- <head>にcsrf-tokenを書いた。
<meta name="csrf-token" content="{{ csrf_token() }}">
参考にしたサイト
- https://loop-never-ends.com/laravel-ajax-call-controller-method/
- https://mintaku-blog.net/laravel-ajax/
- https://noauto-nolife.com/post/laravel-ajax/
Laravelのバージョン
Laravel Framework 8.54.0
ビュー
<tbody> @foreach($tasks as $task) <tr> <td>{{ $task->id }}</td> <td>{{ $task->task_name }}</td> <td>{{ $task->total_time }}</td> <td>{{ $task->updated_at }}</td> <td> <button type="button" id="edit" class="btn btn-success">編集</button> <button type="button" id="delete" class="btn btn-danger">削除</button> </td> </tr> @endforeach </tbody> --省略-- $(function() { $('#delete').click(function() { // コントローラーのメソッドに渡す値 var id = 1; $.ajax({ headers: { // POSTのときはトークンの記述がないと"419 (unknown status)"になるので注意 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, // POSTだけではなく、GETのメソッドも呼び出せる type: 'POST', // ルーティングで設定したURL url:'/delete/' + id, dataType: 'json', // scriptCharset : "UTF-8", contentType: 'application/json', data:id, }).done(function(results) { // 成功したときのコールバック console.log('1'); }).fail(function(jqXHR, textStatus, errorThrown) { // 失敗したときのコールバック console.log('2'+errorThrown); }).always(function() { // 成否に関わらず実行されるコールバック console.log('3'); }); }) }); </script>
ルート
Route::post('/delete/{id}', 'App\Http\Controllers\TaskController@delete')->name('delete');
コントローラー
class TaskController extends Controller { --省略-- public function delete($id , Task $Task) { dd($id); } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/05 01:16