🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

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

PHP

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

JavaScript

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

Q&A

解決済

2回答

758閲覧

wordPress ajaxコーディング方法

FATE-T

総合スコア10

WordPress

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

PHP

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

JavaScript

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

0グッド

0クリップ

投稿2019/12/06 04:17

編集2019/12/20 05:23

2このリストの値を移動させてその値をPOSTで自作のphpに渡したいです。

ajaxのコーディングですが、下記の様に作成しましたがうまく起動しません。
何処が間違っているか教えていただけないでしょうか。
やりたい事はある2このリストの値を移動させてその値をPOSTで自作のphpに渡したいです。

発生している問題・エラーメッセージ

値のPOSTが上手く出来ていないみたいでphpファイル側で$_POSTした値が未定義とエラーが出ました。

該当のソースコード

functions.php

1 2function add_my_ajaxurl() { 3?> 4<script> 5var ajaxurl = ‘<?php echo admin_url( ‘admin-ajax.php’); ?>’; 6</script> 7<?php 8} 9add_action( 'wp_head', 'add_my_ajaxurl', 1 ); 10 11function ajax_move_users() { 12 13 $post = $_POST['users_ID'][0]; 14 echo $post; 15 16 die(); 17} 18add_action('wp_ajax_ajax_test','ajax_move_users'); 19add_action('wp_ajax_nopriv_ajax_test','ajax_move_users'); 20 21?> 22?>

JavaScriputt

1 2// var count_log_filename_js ='count_log_js.txt'; 3// var flag=''; 4// var user_id=''; 5 6$(document).ready(function() { 7 8 9 $('button[id=insert_button]').on('click', function() { 10 // flag = 'insert'; 11 move('right_list', 'left_list'); 12 }); 13 14 $('button[id=delete_button]').on('click', function() { 15 // flag = 'delete'; 16 move('left_list', 'right_list'); 17 }); 18 19 var move = function(_this, target) { 20 $('select[id=' + _this + '] option:selected').each(function() { 21 $('select[id=' + target + ']').append($(this).clone()); 22 $(this).remove(); 23 24 25 }); 26 27 }; 28 29 30 $('button[id=button_a]').on('click', function() { 31 DB_action(); 32 }); 33 34 var DB_action = function(){ 35 36 var left_list = document.getElementById('left_list'); 37 var move_users_opsion = $(left_list).children(); 38 var move_users = []; 39 40 var max = move_users_opsion.length; 41 for (var i = 0 ; i<max;i++){ 42 move_users[i]=move_users_opsion[i].value ; 43 } 44 45 46 var post = 'POST'; 47 var postData = { 48 'action': 'ajax_move_users', 49 //action: TOURAJAX_AJAX.action, 50 //nonce: TOURAJAX_AJAX.nonce, 51 users_ID: [move_users] 52 //'array_test[]': move_user 53 }; 54 55 //Ajaxで送信 56 $.ajax({ 57 url: ajaxurl, 58 type: post, 59 dataType: 'text', 60 data : postData 61 }).done(function (res) { 62 /*var result_html = "<select>"; //表示用HTML 63 for (date in res){ //配列ループ 64 result_html = result_html +'<option id=' + date + 'name= ' + date '>' + 'aaaaa' + '</option>'; 65 } 66 result_html = result_html + "</select>"; 67 68 var element = document.getElementById('left_list'); //結果を表示する場所 69 element.innerHTML = result_html; //結果表示*/ 70 console.log('送信が成功しました。'); 71 console.log(postData); 72 }).fail(function (xhr, textStatus, errorThrown) { 73 alert('エラーが発生しました。'); 74 }); 75 76 }; 77 78});

php

1$move_user = $_POST['users_ID'][0]; 2global $wpdb; 3$wpdb->delete( $wpdb->test_master , 4 array( 5 'posts_ID' => $_SESSION['toukou_id'] 6 ) , 7 array( 8 '%d' 9 )); 10 11for ($i=0; $i < count($move_user); $i++) { 12 13 global $wpdb; 14 $wpdb->insert( $wpdb->test_master , 15 array( 16 'posts_ID' => $_SESSION['toukou_id'], 17 'users_ID' => $muve_user[$i] 18 ), 19 array( 20 '%d', 21 '%d' 22 )); 23 24} 25 26//if (count($move_user)!==0){ 27 print "<script>alert('更新に成功しました。');</script>"; 28//} 29 30

試したこと

データの送信は確認できました。
が取得が上手く出来てないのかphpの変数が空の状態です。

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

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

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

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

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

kei344

2019/12/06 04:45

質問文のコードブロックの終了部分に「```」が足りていません。記入エリアの右部分あたりにリアルタイムに結果が表示されていると思うので、そこを見ながら調整してください。
FATE-T

2019/12/06 05:30

ご指摘ありがとうございます。 修正しました、また不備ありましたらご指摘ください。
kei344

2019/12/06 05:33

提示のコードはエラーが出て動かないと思いますが、書かれている状況が再現するコードを提示されたほうが回答も付きやすいと思います。
guest

回答2

0

ベストアンサー

$.ajaxのdataパラメータにaction:'ajax_test'がセットされてない
というかこれ、dataに何も入ってなくないですかね?

投稿2019/12/06 04:42

編集2019/12/06 04:42
KazuhiroHatano

総合スコア7819

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

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

FATE-T

2019/12/06 04:57

JavaScriputに以下のコードを書き忘れていました var left_list = document.getElementById('left_list'); var move_user = $(left_list).children(); action:'ajax_test'は、以下のように書けばいいのでしょうか? var postData = { 'action': 'ajax_test', 'users_ID': move_user }; ご教授お願い致します。
FATE-T

2019/12/06 05:31

質問文更新しました。
KazuhiroHatano

2019/12/06 05:49

actionのところはまあいいんですが $(left_list).children();の戻り値を$.ajaxのdataにセットしても 正常に処理される気がしません せめて$(left_list).text()あたりじゃないでしょうか 'users_ID[]': move_userみたいにしても配列にしてくれたりはしません 普通にusers_ID:[move_user]みたいな感じでいいです 'users_ID[]'みたいに指定しなきゃいけないのはFormDataのappend()でやる時です
FATE-T

2019/12/07 02:14

ご指摘の箇所を修正して下記のコードで確認しようと思ったのですが、値が入っていないのか何も表示されません。 print("<script> move_user.forEach(function(data) { alert(data); }); </script>"); 後疑問なのですがどのPHPファイルにPOSTするのか何処で指定しているのでしょうか?
FATE-T

2019/12/07 06:08

いろいろ調べてみたら、ajax_testが動いてないのではないかと思うのですが。 ご意見お願いします。
KazuhiroHatano

2019/12/07 12:27

>後疑問なのですがどのPHPファイルにPOSTするのか何処で指定しているのでしょうか? var ajaxurl = ‘<?php echo admin_url( ‘admin-ajax.php’); ?>’; と url: ajaxurl しかしadd_action('wp_footer','add_my_ajaxurl'); みたいなコードが質問文のコードにないってことは もしかしてvar ajaxurl = ‘<?php echo admin_url( ‘admin-ajax.php’); ?>’; が出力されてないとかですかね
FATE-T

2019/12/13 03:38

質問文に書き漏れでした。以下の文を記載しています。 add_action( 'wp_head', 'add_my_ajaxurl', 1 );
FATE-T

2019/12/20 05:26

ご回答ありがとうございます。 ご回答いただいた情報を基に色々試して上記のようになったのですが受け取りができてないみたいです。 解決方法分かりましたらご教授お願いします。 長々お付き合いいただきありがとうございます。 出来ればまだお付き合いください。
guest

0

値のPOSTが上手く出来ていないみたいで

ご質問に提示されたjavascript(Ajax部分)は、POST が 暗黙の var 宣言になっています(値は undefined)。

jQuery.ajax() の settings をご確認ください。
method (default: 'GET')とあります。

文字列で "POST" とすべきですところを デフォルト値の "GET" が適用されているため、PHP側は $_POST が未定義となっているのだと思われます。

投稿2019/12/13 09:31

AkitoshiManabe

総合スコア5434

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

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

FATE-T

2019/12/20 05:25

ご回答ありがとうございます。 ご回答いただいた情報を基に色々試して上記のようになったのですが受け取りができてないみたいです。 解決方法分かりましたらご教授お願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問