web-dev-qa-db-ja.com

管理Ajaxエラー

ホームページをローカルホストで作成しています。

Ajaxではwp_queryが必要です。

しかし、多少の誤差があります。理由はわかりません。手伝って頂けますか?

---->これはload_more_ajax.jsです

var page = 2;
var date_pass = "<?php echo($date_filter);?>";
var compare_pass = "<?php echo($compare);?>";
var ajaxurl = "<?php echo admin_url( 'admin-ajax.php' ); ?>";

jQuery(function($){

   $('body').on('click', '.loadmore', function(){

      var data = {
           'action': 'rnm_load_more_ajax',
           'page': page,
           'date_filter': date_pass,
           'compare': compare_pass,
           'security': '<?php echo wp_create_nonce("load_more_posts"); ?>'
       };

       $.post(ajaxurl, data, function(response){
           $('.race-posts').append(response);
           page++;
       });
   });
});

そして、これはload_more_ajax.phpです

<?php
function load_posts_by_ajax_callback(){
   echo ("hello");    
}

これはadd_actionです

add_action('wp_ajax_rnm_load_more_ajax', 'load_posts_by_ajax_callback');
add_action('wp_ajax_nopriv_rnm_load_more_ajax', 'load_posts_by_ajax_callback');

add_action('wp_enqueue_scripts', 'rnm_enqueue_fn');
function rnm_enqueue_fn(){

   wp_register_script('rnm_load_more', get_template_directory_uri() .'/js/load_more_ajax.js', array(), false, true);
   wp_enqueue_script('rnm_load_more');
}

これはこのようなエラーになります。 error message 

'admin-ajax.php'のURLに問題があると思います。

しかし、私は解決策を見つけることができません。

1
JJang

この行の後にローカライズスクリプト"right"に値を渡す必要があります。

wp_enqueue_script('rnm_load_more');

wp_localize_script を使用して、管理者URLをスクリプトに渡します。

$localization = array(
    'ajax_url' => admin_url('admin-ajax.php'),
);
wp_localize_script( 'rnm_load_more', 'jjang', $localization );

これで、スクリプトでajax_urlを使用できます。

var ajaxurl = rnm_load_more.ajax_url;

この方法を使用して残りのデータを送信できます。

0
Jack Johansson

設定を変更しない限り、.jsファイルでPHPコードを使用することはできません。行ったとしても、それらのURLを取得するにはWPをロードする必要があります。今起こっていることは、あなたがPHPコードを持っていて、その結果ではないということです。

wp_localize_script を使用してWPからデータを設定し、それを静的JavaScriptファイルにアクセスできるようにすることをお勧めします。

0
janh