2017-11-01 11 views
0

最初のドロップダウン選択値に基づいて表示するためにページの1つにユーザーが入力する重力フォームを動的に入力します。このために、フォームのコンテンツを表示するすべてのページで、選択されたドロップダウン入力を知る必要があります。ここで私はこれまで何をやったかです:gravityforms.phpのGFFormsクラス-Inwordpress/php - Ajax/Jqueryは重力フォームの入力フィールド/別のページへのドロップを送信します

:init関数で 私のような私のフックを登録:

add_action('admin_enqueue_scripts', 'my_enqueue'); 

と後に 『(maybe_process_form)』このファイル内の静的関数、Iはmy_enqueueを追加しました:

<script type="text/javascript" > 
jQuery(document).ready(function($) { 

jQuery('#input_2_3').bind('onchange', function(){ 
ajaxSend(this.form); 
}); 
}); 

function ajaxSend(form1) 
{ 

    jQuery(document).ready(function($) { 
    var data = { 
     'action': 'my_enqueue' 
    }; 

    jQuery.post(ajaxurl, data, function(response) { 
    }); 
}); 
} 
</script> 

function my_enqueue() { 
wp_enqueue_script('ajax-script', plugins_url('/js/ajaxSendField.js', __FILE__), array('jquery')); 
wp_localize_script('ajax-script', 'ajax_object', 
     array('ajax_url' => admin_url('admin-ajax.php')); 
} 

はjsのフォルダにajaxSendField.jsという名前のファイルを-Created 10

ここで、input_2_3は、クロムで検査するときにドロップダウン選択のIDです。これまでのところ、フォームを送信するのではなく、ドロップダウンメニューを選択して値を渡す場合は、onchangeイベントをフォームに設定する必要がありました。しかし、私がページソースを見ると、それは表示されません。 custompage1.phpと呼ばれる送信された値を表示するためのページのテンプレート-In は、私はそのフッターの上、以下のコードを追加しました:INPUT_3はの選択名です

<?php 
echo "Hi"; 
echo $_POST['input_3']."<br>"."Bye"; 
?> 

します。しかし、フォーム提出(Ajax)で、私は得るだけ こんにちは Bye 何が問題になる可能性がありますか?任意の提案をいただければ幸いです。

答えて

0

私はあなたが達成しようとしていることについて完全に明確ではありませんが、選択に基づいてフォームの値を変更することは、サーバーへのajaxコールを必要とせずに達成できるものです。とにかく、それはあなたが尋ねたものではありません....

function ajaxSend(form1) 
{ 
    jQuery(document).ready(function($) { 
     var data = { 
      'action': 'my_enqueue' 
     }; 
     jQuery.post(ajaxurl, data, function(response) { 
     }); 
    }); 
} 

あなたのコードでいくつかの作業が始まりました。上のコードでは、関数内に関数をネストしています。 jQuery(document).ready(function($)は、ページの読み込みが完了したら、これを行うことを意味します。それは別の関数の中に属しません。

var data = { 
'action': 'my_enqueue' 
} 

データvarは、サーバーに送信するようにあなたのAjax呼び出しに伝えているものです。 Wordpressでは、actionパラメータはWordpressで実行するアクションを指定しますが(詳細は後述)、他のデータも一緒に送信していません。あなたの目標に基づいて、私はあなたが少なくとも選択ボックスの価値を送るべきだと思っていました。

jQuery.post(ajaxurl, data, function(response) { 
}); 

これはデータを投稿しますが、レスポンスの処理内容を指定するコードはありません。サーバーは、のは、この

add_action('admin_enqueue_scripts', 'my_enqueue'); 
から始めましょう...あなたはそれのWordpressの側面については出力

を処理する方法を、あなたのAJAX呼び出しを指示しない限り、何も起こりませんしたいすべてのデータをあなたに返送された場合でも、

これはあなたのスクリプトを管理ページにエンキューするだけです。本当に欲しいものか、add_action('wp_enqueue_scripts', 'my_enqueue');のほうがいいですか? wp_localize_scriptのパラメータが、ajax呼び出しの値と一致しません。これがどのように機能するかを理解するために、ドキュメントを再度お読みになることをお勧めします。

私の最後のポイントは、あなたはajaxアクションを追加していません。これらは次の形式をとります

add_action('wp_ajax_nopriv_ajax_action', 'my_function'); 
add_action('wp_ajax_ajax_action', 'my_function'); 

これはWordPressにあなたのajaxリクエストに関係する機能を伝えます。 1つはログインしていないユーザー、2つ目はユーザーのユーザーです。

あなたは良いスタートを切ったが、行く道は少し残っている。がんばろう。

+0

私はphp/Ajaxのnoobですので、私の過ちには申し訳ありません、ありがとうございます。私は選択に基づいてフォームの値を変更したくないのですが、フォームが別のページに送信されたときに欲しいです(これは、他のページを指定する方法もわかりません。 WordPressの ".php")、私は別のページの値を選択するためのアクセス権を持っているので、その選択値が特定の値であればフォームデータを読み込みます。 – alaky

+0

1)データ変数の選択値をその名前、IDなどでどのように送ることができますか? 2)フォームのページにはajaxレスポンスが必要ないので、ここでは必要ないと思うが、ここにデータベースの特定の選択値を持つフォームエントリをすべて挿入する方法はあるのだろうか?3) wp_localize_scriptの私のajax呼び出しに関する私の? – alaky

+0

4)私がadd_actionを呼び出してアクションを正しく宣言した場所はありますか? – alaky

関連する問題