0

我一辈子都无法在我的functions.php文件中加入任何脚本,也无法本地化我的admin-ajax.php url。我一直在他们的传统位置包含任何 css 和 js(标题中的 css 和 body 标记结束之前的 js),到目前为止它一直为我工作,但很明显,发出 ajax 请求的 js 文件需要在这个文件中注册。

本质上,我正在尝试发出 AJAX 请求,以重新查询数据库以查找仅与客户网站博客页面上的某个类别相关的帖子,并在不刷新的情况下显示结果。

截至目前,我只是想让一个虚拟函数处理请求并返回类别

我的functions.php文件中的相关代码

<?php

function register_styles_and_scripts() {
  // BOOTSTRAP CSS
  wp_enqueue_style( 'bootstrap', get_template_directory_uri() . '/css/bootstrap.min.css' );
  // MAIN CSS
  wp_enqueue_style( 'styles', get_template_directory_uri() . '/css/style.css' );
  // JQUERY
  wp_register_script('jquery', get_template_directory_uri() . '/js/jQuery.min.js', array(),'1.11.1', true);
  wp_enqueue_script('jquery');

  // BOOTSTRAP JS
  wp_register_script('bootstrap', get_template_directory_uri() . '/js/bootstrap.min.js', array('jquery'), '3.3.1', true);
  wp_enqueue_script('bootstrap');

  // MAIN JS
  wp_register_script('main', get_template_directory_uri() . '/js/main.js', array('jquery'), 'false', true);

  wp_enqueue_script('main', get_template_directory_uri() . '/js/main.js', array('jquery'), 'false', true);



  wp_enqueue_script('main');
  $localize = array(
       'ajaxurl' => admin_url('admin-ajax.php'),
       'auth' => wp_create_nonce('_check__ajax_100')
   );
   wp_localize_script( 'main', 'ajax_params', $localize);
}
add_action('wp_enqueue_scripts', 'register_styles_and_scripts');
add_action('admin_enqueue_scripts', 'register_styles_and_scripts');


// === AJAX === //
function test_ajax_function() {
  check_ajax_referer( '_check__ajax_100', 'nonce_field' );
  $cat = $_POST[ "cat" ];
    echo $cat;
    wp_die(); 
}    
add_action( 'wp_ajax_test_ajax_function', 'test_ajax_function' );
add_action( 'wp_ajax_nopriv_ test_ajax_function', 'test_ajax_function' );

?>

我遵循了许多教程,并认为我正确设置了本地化,但是当我拨打电话时,ajaxurl 是未定义的。

我的 AJAX 请求

$('.cat-item a').on("click", function(e) {
  e.preventDefault();
  var postRow = $('#postRow'),
    selectedCategory = $(this).text().trim(),
    ajaxurl = "<?php echo admin_url('admin-ajax.php') ?>";
  console.log("ajax URL: ", ajaxurl);
  postRow.animate({
    opacity: "0.5"
  });
  $.ajax({
    method: "POST",
    url: ajax_params.ajax_url,
    type: "post",
    dataType: "html",
    data: {
      "action": "test_ajax_function",
      "cat": selectedCategory,
      "security": "<?php echo wp_create_nonce('filter_posts')"
    },
    success: function(result) {
      console.log(result);
    },
    error: function(jqXHR, textStatus, errorThrown) {
      console.log("headers", jqXHR);
      console.log("textstatus: ", textStatus);
      console.log("error thrown: ", errorThrown);
      console.log("response text: ", jqXHR.responseText);
    }
  })
});

我错过了什么?

4

0 回答 0