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

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

新規登録して質問してみよう
ただいま回答率
85.50%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

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

Q&A

解決済

3回答

3130閲覧

wordpressにおいて、ajax処理でデータを削除したい

YugoOgura

総合スコア14

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

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

0グッド

0クリップ

投稿2016/07/01 12:12

今、wordpressを使ったwebサイトを作っています。
ボタンを押すと、指定されたデータが削除されるようにajax処理で書きたいのですが、
処理がうまくいきません。
ボタンをクリックして、下のfunctionが起動するようになっており、
一連のポップアップが表示されるのですが、
データの処理だけがうまくいきません。
コードは以下の通りです。

コード function testt(reserveID){ swal({ title: "ホントに大丈夫?"+reserveID, text: "予約データを取り消します。一度消したらもとには戻せませんよ?", type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: "けす!", cancelButtonText: "やっぱやめる" , closeOnConfirm: false }, function(){ jQuery.ajax({ type: "POST", url: '<?php echo admin_url('admin-ajax.php'); ?>', data:{ "action": "delete_reservation_by_ajax" , "reserveID": reserveID, }, success: function(){ swal({ title: "取引を完了しました。", type: "success", showCancelButton: false, confirmButtonColor: "#AEDEF4", confirmButtonText: "OK", closeOnConfirm: true }, function(){ location.reload(); }); }, false: function(msg){ swal({ title: "取引完了に失敗しました。", text: result.message, type: "error", showCancelButton: false, confirmButtonColor: "#AEDEF4", confirmButtonText: "OK", closeOnConfirm: true }); } }); }); }

そして、

コード function delete_reservation($reserve_id){ global $wpdb; global $table_prefix; $wpdb->query($wpdb->prepare( "DELETE FROM ".$table_prefix."fmt_reserve WHERE reserve_id=%d", $reserve_id )); } add_action('delete_reservation','delete_reservation'); function delete_reservation_by_ajax(){ $reserveID = $_POST['reserveID']; delete_reservation($reserveID); } add_action('delete_reservation_by_ajax','delete_reservation_by_ajax');

swalと書いてあるのは、jQueryのプラグインです。
sweet alert説明

問題がどこにあるのかもわからず、八方ふさがりな状況です。
細かい指摘、気になることでも構いません。

なにかご指摘いただければ幸いです。

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

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

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

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

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

guest

回答3

0

下記ページを見てやり方を再構築されてみてはいかがでしょう。

【WordPressでajaxの基本的なやり方 – Shinichi Nishikawa's】
http://nskw-style.com/2014/wordpress/ajax.html

また、Ajax で「削除」という比較的重めの処理を行われるのであれば、nonce を使った実装にされることをお勧めします。(上記URLの例でも使用しています)

【初歩からわかるWordPressのnonceでAjaxをセキュアに実装する方法 | ゆっくりと…】
http://tokkono.cute.coocan.jp/blog/slow/index.php/wordpress/secured-ajax-with-wp-nonce/

投稿2016/07/01 18:34

kei344

総合スコア69364

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

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

YugoOgura

2016/07/02 14:57

ありがとうございます。 根本的には技術力がないことが問題ですね。。。 サイトのご紹介ありがとうございます。 再構築をしてみます。
kei344

2016/07/02 15:45

> 根本的には技術力がないことが問題ですね WordPress に通常ページ以外を認識させるのは手間と手法が特殊なため、誤った情報などもあったりするので、たまたま見かけた情報が悪かったか、勘が外れただけではないでしょうか。 WordPress は本国公式リファレンスと本体コードを追いながら挙動を把握するのが近道になると思います。(日本語サイトの場合情報が古いことがたまにあります) 【Reference | WordPress Developer Resources】 https://developer.wordpress.org/reference/
guest

0

ベストアンサー

単純にajaxがきちんとデータを受渡しているか確認する
ご存知だと思いますがajaxはよくパースエラーを起こします。
その上でphp側が実行されているか確認する
場合によってはmysqldのログを確認する
の順番で処理すればよいでしょう
とくにajaxでデータ削除する場合同期処理が必要。
asyncを調整して削除したあとにデータ参照するようにしてください。

また、ちょっと気になったのですが・・・
予約IDを渡すだけで削除されちゃうのは問題ありますね
セッションでユーザーIDを引き継ぎ、予約IDに対する削除権限を
ユーザーIDが持っているかチェックしないといけません。
(予約レコードにユーザーIDを埋め込んで、削除時にwhere句で指定する?)

投稿2016/07/04 03:23

yambejp

総合スコア114572

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

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

0

上はJavaScriptで下は、PHPでいいのですかね
よく分かりませんが、眺めてて、ん?って思ったことだけ書きます。

JavaScript

1 url: '<?php echo admin_url('admin-ajax.php'); ?>',

これが、JavaScriptだとすると <?php echo admin_url('admin-ajax.php'); ?> はありえないと思うのですが、私の解釈がおかしいですかね?

Ajaxは実行結果がわかりにくくなるので、そういうときは。
URLをブラウザで直接叩いてみて動くのか確認してみるといいですよ。

それとコードを入れるときは、「ここに言語を入力」というところに言語を書くと表示されますよ ^^

あとは、他の素晴らしい回答者が、教えてくれると思います ^_^;

投稿2016/07/01 13:20

Mr_Roboto

総合スコア2208

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

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

YugoOgura

2016/07/02 14:56

ありがとうございます! これは、PHPもJavscriptも一緒に書いてしまったコードなので 言語をあえて選べませんでした。。。 こんらんさせてしまい、すみませんでした。 頑張ってみます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問