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

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

ただいまの
回答率

88.77%

wordPress ajaxコーディング方法

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 412

FATE-T

score 10

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

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

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

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

該当のソースコード

function add_my_ajaxurl() {
?>
<script>
var ajaxurl = ‘<?php echo admin_url( ‘admin-ajax.php’); ?>’;
</script>
<?php
}
add_action( 'wp_head', 'add_my_ajaxurl', 1 );

function ajax_move_users() {

    $post = $_POST['users_ID'][0];
    echo $post;

    die();
}
add_action('wp_ajax_ajax_test','ajax_move_users');
add_action('wp_ajax_nopriv_ajax_test','ajax_move_users');

?>
?>
// var count_log_filename_js ='count_log_js.txt';
// var flag='';    
// var user_id='';    

$(document).ready(function() {


    $('button[id=insert_button]').on('click', function() {
        // flag = 'insert';
        move('right_list', 'left_list');
    });

    $('button[id=delete_button]').on('click', function() {
        // flag = 'delete';
        move('left_list', 'right_list');
    });

    var move = function(_this, target) {
        $('select[id=' + _this + '] option:selected').each(function() {
            $('select[id=' + target + ']').append($(this).clone());
            $(this).remove();


        });

    };


    $('button[id=button_a]').on('click', function() {
        DB_action(); 
    });

    var DB_action = function(){

        var left_list = document.getElementById('left_list');
        var move_users_opsion = $(left_list).children();
        var move_users = [];

        var max = move_users_opsion.length;
        for (var i = 0 ; i<max;i++){
            move_users[i]=move_users_opsion[i].value ;
        }


        var post = 'POST';
        var postData = {
            'action': 'ajax_move_users',
            //action: TOURAJAX_AJAX.action,
            //nonce: TOURAJAX_AJAX.nonce,
            users_ID: [move_users]
            //'array_test[]': move_user
        };

        //Ajaxで送信
        $.ajax({
            url: ajaxurl,
            type: post,
            dataType: 'text',
            data : postData
        }).done(function (res) {
            /*var result_html = "<select>"; //表示用HTML
                for (date in res){   //配列ループ
                    result_html = result_html +'<option id=' + date + 'name= ' + date '>' + 'aaaaa' + '</option>';
                }
                result_html = result_html + "</select>";

                var element = document.getElementById('left_list');  //結果を表示する場所
                element.innerHTML = result_html;    //結果表示*/
            console.log('送信が成功しました。');
            console.log(postData);
        }).fail(function (xhr, textStatus, errorThrown) {
            alert('エラーが発生しました。');
        });

    };

});
$move_user = $_POST['users_ID'][0];
global $wpdb;
$wpdb->delete( $wpdb->test_master ,
 array(
     'posts_ID' => $_SESSION['toukou_id'] 
 ) , 
 array(
     '%d'
 ));

for ($i=0; $i < count($move_user); $i++) {

    global $wpdb;
    $wpdb->insert( $wpdb->test_master , 
    array( 
        'posts_ID' => $_SESSION['toukou_id'], 
        'users_ID' => $muve_user[$i] 
        ),
        array(
            '%d', 
            '%d'    
        ));

}

//if (count($move_user)!==0){
    print "<script>alert('更新に成功しました。');</script>";
//}

試したこと

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2019/12/06 13:45

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

    キャンセル

  • FATE-T

    2019/12/06 14:30

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

    キャンセル

  • kei344

    2019/12/06 14:33

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

    キャンセル

回答 2

checkベストアンサー

+1

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/12/07 21: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’); ?>’;
    が出力されてないとかですかね

    キャンセル

  • 2019/12/13 12:38

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

    キャンセル

  • 2019/12/20 14:26

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

    キャンセル

0

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/12/20 14:25

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

    キャンセル

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

  • ただいまの回答率 88.77%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る