1

私は Stackexchange の Wordpress 側でこれを尋ねましたが、私をどこかに導く答えがなくなったので、ここの誰かが助けてくれることを望んでいました. このクロスポストがルールに違反している場合は申し訳ありません. 元はここにありました。https://wordpress.stackexchange.com/questions/95075/jquery-ajax-call-not-executing-in-plugin

「寄付」フォームを出力する無料プラグインのクラスに取り組んでいます。「いいえ」の却下リンクはフォームを非表示にし、AJAX 呼び出しを実行して WP オプションを更新し、却下を追跡します。

呼び出された PHP 関数を実際に起動するのに問題があります。AJAXによって呼び出されたPHP関数に追加したエコーを出力する「成功」関数を追加しました(通常、関数には出力がなく、WPオプションの更新のみです)が、「データ」は常に0であり、データベース。

このプラグインには他にもいくつかの AJAX 呼び出しがあり、すべて機能しますが、クラス内にあるのはこれだけです。クラスの開発の初期には機能していましたが、それを壊すために何ができたのかわかりません。私はそれをAJAX登録の宣言とテストメッセージを出力する関数だけに落とし込もうとしましたが、成功しませんでした。

何らかの理由でWPが実際に機能を使用できないと推測しています。

これが私のjQuery AJAX呼び出しの関連部分です

    // Create the AJAX data
    ajax_call_data = {
            'action': 'dismiss_ppd_dmgr',
            'nonce': $nonce
    };

    // Call the AJAX function to update the options
    jQuery.ajax({
            url: ajaxurl,
            type: 'post',
            data: ajax_call_data,
            success: function(data) { alert( data ) }
     });

クラスには、クラスのインスタンス化で設定される属性 ajax_call があり、Wordpress への呼び出しをそのように追加しています。$this->ajax_call が適切に設定されていることを確認し、変数を使用する代わりにハードコーディングも試みました。

    add_action( 'wp_ajax_' . $this->ajax_call , array( &$this , 'dismiss_form' ) );

$this->ajax_call は「dismiss_ppd_dmgr」を出力します。wp_filter をエコーし​​たところ、wp_ajax_dismiss_ppd_dmgr が登録されていて、クラスで Dismiss_form() を指していることがわかりました。ただし、結果は常に 0 であり、データベースでは何も更新されません。

私が試したこと:

  • & ありとなし
  • $this->ajax_call の代わりにハードコーディング
  • add_action をコンストラクターで直接呼び出すだけでなく、admin_init アクションによって呼び出される関数内に配置する
  • クラス外でAJAX add_actionを作成する

     add_action( 'wp_ajax_dismiss_ppd_dmgr' , array( $ppd_dmgr , 'dismiss_form' ) );
    

WP が私の AJAX 呼び出しを好まない理由について、誰か考えはありますか?

4

0 に答える 0