Admin-Ajax Error

时间:2017-12-17 作者:JJang

我在本地主机上制作主页。

我需要wp_query 使用Ajax。

但有一些错误。我不知道为什么。你能帮帮我吗?

---->这是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\\u操作

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”的url中存在一些问题。php\'

但我找不到任何解决办法。

2 个回复
最合适的回答,由SO网友:Johansson 整理而成

您需要将这些值传递给本地化脚本,在这一行之后是“right”:

wp_enqueue_script(\'rnm_load_more\');
我将使用wp_localize_script:

$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;
您可以使用此方法发送其余数据。

SO网友:janh

您不能在应用程序中使用PHP代码。js文件,除非更改配置。即使您这样做了,您也必须加载WP才能获得这些URL。现在的情况是,JS中有PHP代码,而不是它的结果。

您可能想使用wp_localize_script 从WP中设置可以在静态JavaScript文件中访问的数据。

结束