ホームページ  >  記事  >  バックエンド開発  >  WordPress Ajax 呼び出しで「0」が返されるのはなぜですか?

WordPress Ajax 呼び出しで「0」が返されるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 00:49:29619ブラウズ

Why Does My WordPress Ajax Call Return

WordPress での Ajax 呼び出しのトラブルシューティング: 出力が「0」になる理由

WordPress では、Ajax 呼び出しを行うのは簡単ですが、場合によっては問題が発生することがあります。生じる可能性があります。よくある問題の 1 つは、別の値を渡しているにもかかわらず、Ajax 呼び出しが出力として「0」を返す場合です。

この問題は、WordPress のフロントエンドに ajaxurl 変数がないことが原因で発生します。 WordPress はこの変数をバックエンドで定義しますが、Ajax 呼び出しが実行されるフロントエンドでは定義しません。

解決策: JavaScript ファイルをローカライズします

この問題を解決するには、フロントエンド コードで ajaxurl 変数を定義する必要があります。これは、データをローカライズされたスクリプトに関連付ける wp_localize_script 関数を使用して行うことができます。

その方法は次のとおりです:

  1. JavaScript ファイルをキューに入れます:

    <code class="php">function my_enqueue() {
       wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/js/my-ajax-script.js', array('jquery') );
    }
    add_action( 'wp_enqueue_scripts', 'my_enqueue' );</code>
  2. スクリプトをローカライズします:

    <code class="php">wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );</code>

このコードは、というグローバル オブジェクトを作成します。 Ajax スクリプト内の my_ajax_object には、ajaxurl 変数が含まれています。

  1. Ajax 呼び出しで ajaxurl 変数を使用します:

    <code class="javascript">jQuery.ajax({
     type: "post",
     dataType: "json",
     url: my_ajax_object.ajax_url,
     data: formData,
     success: function(msg){
         console.log(msg);
     }
    });</code>

my_ajax_object.ajax_url を使用することで、正しい WordPress エンドポイントに対して Ajax 呼び出しを行い、期待どおりの出力を受け取ることができるようになりました。

以上がWordPress Ajax 呼び出しで「0」が返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。