[WordPress] ワードプレスのプラグインが動作していないに jQuery の AJAX 呼び出し

スポンサーリンク

Question

動作していないワードプレス プラグイン ページで Jquery の Ajax 呼び出し を… この記事を読んでいます。

だ非常に近い私の問題.非常に特定のメンバーシップ フォームを提供する非常に基本的なワードプレスのプラグインがある、それを処理するために PayPal 支払いを渡しますだけ入力されたデータをメールします。ある PayPal ボタンの同じボタンのクリック、jQury スクリプトはピックアップする submit ボタンのクリックと別のメール メッセージを生成する同じデータを渡す.

このすべて働いていたワードプレスに移動する前に、今それがすべて動作 AJAX 関数を除いて、送信ボタンをワードプレスのプラグインの下をクリックします。ピックアップに jQury スクリプトがあるお支払いフォームが送信され、[送信] ボタンをクリックして AJAX を介して支払いフォーム データを送信します。

ここは js ファイルです.ページのソースをチェックし、js スクリプトを追加する適切なワードプレスのヘッダー行を参照してください正しい js ファイルを取得、ソースのリンクを選ぶします。また、alert(“help”) ときにポップアップ表示も非コメント

jQuery(document).ready(function(){
  jQuery('#paypal').submit(function(){
       //alert("help");
       jQuery.ajax({
         url : ajax_object.ajaxurl,
         type: 'POST',
         action: 'memreg_process_request',
         //Is this the correct way to pass form data under WordPress.
         data: $(this).serialize(),
         success: function( data ){
           //Do something with the result from server
           console.log( data );
         }
       });
  });                      
});

… ワードプレスの myplugin のコードをここでは

function myplugin_register_script() 
{
  // Register the style 
wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js', false, '1.10.2', false) ;
  wp_register_script('memreg_process', plugins_url( '/js/memreg.js',__FILE__), false, '1.0.0', false) ;
  // enqueing:
  wp_enqueue_script('jquery');
  wp_enqueue_script('memreg_process');
  wp_localize_script( 'ajaxHandle', 'ajax_object', array( 'ajaxurl' => admin_url( 'admin_ajax.php' ) ) );
}

function myplugin_styles()  
{ 
  // Register the style
  wp_register_style( 'memreg_style', plugins_url('style.css', __FILE__),false, '1.0.0', false );
  // enqueing:
  wp_enqueue_style( 'memreg_style' );
}
add_action('wp_enqueue_scripts', 'myplugin_register_script');
add_action('wp_enqueue_scripts', 'myplugin_styles');

add_action( 'wp_ajax_memreg_process_request', 'memreg_process_request_wp_ajax_function' );
add_action( 'wp_ajax_nopriv_memreg_process_request', 'memreg_process_request_wp_ajax_function' );

function memreg_process_request_wp_ajax_function(){
   $email_to = "oet@pacssi.com";
   $email_subject = "Testing Email Function from PHP script";
   $email_message .= "This is a test message to test AJAX result\n"; 
   $email_message .='Address:'.$_POST["Street"].', '.$_POST["City"].', '.$_POST["State"].' '.$_POST["Zip"]."\r\n";
   $email_message .='Phone:'.$_POST["Phone"].'Email:'.$_POST["Email"]."\r\n";
   $email_message .='Chapter:'.$_POST["Chapter"]."\r\n";   
   $headers = 'From: '.$email_from."\r\n".
   'Reply-To: '.$email_from."\r\n" .
   'X-Mailer: PHP/' . phpversion();
   @mail($email_to, $email_subject, $email_message, $headers);  

  //To send back a response you have to echo the result!
  //echo $_POST['Email'];
  //echo $_POST['Chapter'];
  wp_die(); // ajax call must die to avoid trailing 0 in your response
}

function myform(){
........
}

をもう一度、プラグインをワードプレスに会員登録フォーム移動する前に働いてすべての AJAX の部分を持っていた。ワードプレスの前に、AJAX はちょうどフィールドがいくつかを引き出し、電子メール メッセージを生成する web サーバー上の別の process.php ファイルにフォーム データが送信されます。上記の記事および多くの他を読んで私はないワードプレスの下で働く AJAX パーツを取得することができます。

答え

皆さんも

action: 'memreg_process_request'

、しかし

action

プロパティとして認識されていない、さらに

$_POST['action'] = 'memreg_process_request'

を渡していないを参照してください。さらに、変数

$(this)

は、ajax リクエストを参照; したがって、ajax 要求を構築する前にフォーム変数への参照をキャッシュする必要があります:

var $this = $(this);

$.ajax({....

data

コンス トラクターの内部アクションとフォームを定義する必要があります

現実には、それ構造化されるべきより多くのような:

何もそれには

add_action

を登録すると、要求/応答を処理している機能を持っている

もちろん、フォームが利用可能

$_POST['form']

data: {
    action: 'memreg_process_request',
    form: $this.serialize()
}

http://stackoverflow.com/questions/27750393/jquery-ajax-call-in-wordpress-plugin-not-working

スポンサーリンク

Leave a Reply