質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

1回答

1181閲覧

Ajaxを使ってSQLiteのデータを削除したい

pararinrinrin

総合スコア26

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2020/05/09 01:10

編集2020/05/09 01:11

bladeからモーダルダイアログを表示し、javascriptで動的に生成した削除ボタンを押してデータを削除したいのですが、
うまく動作せず、以下のようなデータすら表示されなくなってしまいます。
イメージ説明

javascript

1for (var i = 0; i < data.length; i++) { 2 $('.contents').append('<tr><td>' + data[i] + '</td><td><input type="button" class="delete" value="削除" data-delete="' + id[i] + '"></td></tr>'); //予定とidをモーダルに反映 3 } 4 5 /* Ajax で削除機能実装*/ 6 $('.delete').click(function() { 7 //クリックしたボタンのdata属性からidを取得し、同じidを削除する 8 var id = $(this).attr("data-delete"); 9 10 $.ajax({ 11 headers: { 12 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 13 }, 14 url: '/home/month/' + id, 15 type: 'POST', 16 data: {'id': {{$month - > id}},'_method': 'DELETE'} 17 }) 18 // Ajaxリクエストが成功した場合 19 .done(function(data) { 20 alert('成功'); 21 }) 22 // Ajaxリクエストが失敗した場合 23 .fail(function(data) { 24 alert('失敗'); 25 }); 26 27 })

layout.blade.php

layout.blade.php

1<head> 2 <meta name="csrf-token" content="{{ csrf_token() }}"> 3</head>

HomeController

1public function monthItemAdd(Request $request) 2 { 3 //インスタンス作成 4 $month = new Month(); 5 6 //モデルインスタンスのtask,username属性に代入 7 $month->year = $request->year; 8 $month->month = $request->month; 9 $month->day = $request->day; 10 $month->task = $request->task; 11 $month->username = $request->username; 12 13 14 //saveメソッドが呼ばれると新しいレコードがデータベースに挿入される 15 $month->save(); 16 17 return redirect('/home'); 18 } 19 public function monthItemDelete(Request $request, Month $month) 20 { 21 $month->delete(); 22 return redirect('/home'); 23 }

web.php

web.php

1Route::delete('/home/month/{month}', 'HomeController@monthItemDelete');

上記コードに誤りがある場合指摘いただけると幸いです。
おそれいりますが、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/09 02:08

> data: {'id': {{$month - > id}},'_method': 'DELETE'} JavaScriptもBlade上で書かれているのでしょうか。
pararinrinrin

2020/05/09 02:11

書き込みありがとうございます。 はい、一旦JavaScriptもBlade上で書いてます。
m.ts10806

2020/05/09 02:15

それを分かるようにしてもらえたら。 単体で提示されていたら「jsファイルに書いてる」と認識します。 あと、ブラウザデベロッパーツールのコンソールにエラーは出てませんか?
guest

回答1

0

自己解決

ご回答いただいた方ありがとうございました!
ボタンを押してデータを削除するところまでは無事解決できました。

layout.blade.phpに直接スクリプト書いてます。

js

1for (var i = 0; i < data.length; i++) { 2 $('.contents').append('<tr><td>' + data[i] + '</td><td><input type="button" class="delete" value="削除" data-delete="' + id[i] + '"></td></tr>'); //予定とidをモーダルに反映 3 } 4 5 /* Ajax で削除機能実装*/ 6 $('.delete').click(function() { 7 //クリックしたボタンのdata属性からidを取得し、同じidを削除する 8 var id = $(this).attr("data-delete"); 9 10 $.ajaxSetup({ 11 headers: { 12 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 13 } 14 }); 15 16 $.ajax({ 17 url: "/home/month/" + id, 18 type: 'POST', 19 data: { 20 'id': id 21 } 22 }) 23 // Ajaxリクエストが成功した場合 24 .done(function(data, textStatus, jqXHR) { 25 alert('成功'); 26 }) 27 // Ajaxリクエストが失敗した場合 28 .fail(function(data) { 29 alert('失敗'); 30 }); 31 })

ヘッダー

blade

1<head> 2 <meta name="csrf-token" content="{{ csrf_token() }}"> 3</head>

モーダル部分

blade

1<!--モーダルここから--> 2 <div class="modal fade" id="Modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 3 <div class="modal-dialog" role="document"> 4 <div class="modal-content"> 5 <div class="modal-header"> 6 <h5 class="modal-title"></h5> 7 <button type="button" class="close" data-dismiss="modal" aria-label="閉じる"> 8 <span aria-hidden="true">×</span> 9 </button> 10 </div> 11 <div class="modal-body"> 12 <table class="contents"> 13 </table> 14 </div> 15 </div> 16 </div> 17 </div> 18 <!--モーダルここまで-->

HomeController

1public function delete(Request $request) 2 { 3 // ユーザ削除処理実行 4 5 $id = $request->id; 6 $list = DB::delete( 7 "delete from month where id = ?", 8 [$request['id']] 9 ); 10 11 return redirect('/home'); 12 }

web.php

route

1Route::post('/home/month/{month}', 'HomeController@delete');

リクエスト実行後の画面遷移についてはまだ課題は残りますが、ひとまず削除処理としてはこれで解決できました。

投稿2020/05/10 05:07

pararinrinrin

総合スコア26

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問