0

Wordpress で構築されたアプリケーションにカスタム JS を追加して予定を設定し、予定のリクエストが行われた場合にクライアントとワーカーの両方にリクエスト メールが送信されるようにします。予約はボタンを押すことによって行われ、リクエストはボタンを .click() イベントにバインドすることによって行われます。

メールを送信するために、予約を承認する最初の ajax 関数の success 関数内に ajax 関数を配置して、予約が承認された場合にメールが送信されるようにします。私はこれを設定しようとしていましたが、何をしても成功関数内の 2 番目の ajax 関数が起動せず、エラーの内容を正しく報告することさえできないことがわかりました。

これが ajax 関数自体に問題があるかどうかをテストするために、success 関数から取り出して $(document).ready(function() { }) 内に配置し、別のイベントにバインドして確認しました。それが発火する場合-そして発火しました。したがって、関数自体は問題ではなく、別のajax リクエストの成功関数内にあるということです。

これを発火させるにはどうすればいいですか?スタック オーバーフローに関する他の提案はせいぜい非常に紛らわしいので、もう一度質問して申し訳ありませんが、これに対する明確な満足のいく答えはないようです。

これは、最初の ajax リクエストのコールバック関数内に配置したコードで、コールバック関数の外に出して別のイベントにバインドすると、完全にうまく機能しました。

    $.ajax({  
              type: "POST",  
              dataType: "JSON", 
              url: "[home url]/wp-admin/admin-ajax.php",  
              data: "action=finchJsonTest",  
              success: process_lesson_request,  
              error: function(MLHttpRequest, textStatus, errorThrown){  
                        alert(errorThrown);
                        alert("Something\'s not right!");   
              }  
       });                                     

              function process_lesson_request(data) {
                          alert("Hooray!");  
                          console.log(data);                                               
              }  

これは、Wordpress がこの ajax リクエストを処理するために呼び出す php 関数です (データ文字列の "action" 変数によって決定されます)。特に重要なことは何もありません。JSON オブジェクトが正常に返されるかどうかをテストしただけです。

function finchJsonTest() { 
    $json_array[] = 'This is something!'; 
    $finaljson_array = json_encode($json_array); 
    echo $finaljson_array; 
    die(); 

}  

add_action( 'wp_ajax_nopriv_finchJsonTest', 'finchJsonTest' );  
add_action( 'wp_ajax_finchJsonTest', 'finchJsonTest' );

繰り返しますが、この ajax 呼び出しを何らかのイベントにバインドして使用すると、完全に機能し、目的の JSON オブジェクト (「これは何か」というテキストのみ) を返しますが、これを別の ajax 要求の成功コールバック関数に入れると、 、失敗し、エラーが何であるかさえスローしません。実際、これに関連する他のスタック オーバーフローの投稿を読んだことがありますが、何をすべきか頭や尾を立てることができませんでした。そこに何か考えはありますか?

4

0 に答える 0