Wordpress AJAX,Jquery部分发送数据但PHP函数不运行

时间:2017-06-16 19:35:01

标签: php jquery ajax wordpress

当有人点击a标签元素时,这是调用ajax函数的jquery部分。我想要做的是从标签元素中获取数据值,将其传递给php函数,并使用传入的字符串变量运行php函数。 Jquery部分工作,我可以发送数据值,但PHP函数甚至不运行,不知道我做错了什么。

$(function(){
  $('#catFilter a').on('click', function(e){
    e.preventDefault();
    $(this).fadeOut(300);
    var x = $(this).attr('data-slug');
    var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';

  $.ajax({
    url: ajaxurl,
    type: 'post',
    data: {data: x, action: 'filter'},
    success: function(data, status) {
      console.log(x);
    },
    error: function(xhr, desc, err) {
      console.log(xhr);
      console.log("Details: " + desc + "\nError:" + err);
    }
    }); // end ajax call
  });
});

PHP部分,我想将A标签元素中的数据值添加到PHP数组中,然后使用传入的参数运行该函数。

function filter(){
  $x = $_POST['data'];
  array_push($needleArray, $x);
  post_filter();
  die();
}
add_action('wp_ajax_filter', 'filter');
add_action('wp_ajax_nopriv_filter', 'filter');

1 个答案:

答案 0 :(得分:0)

Wordpress使用jQuery noConflict模式以避免与可能使用符号$的其他JavaScript库冲突。 你需要改变这个:

$(function(){
    // your code
});

对此:

jQuery(function($){
  // your code
});

这是使用jQuery的安全方法。 https://developer.wordpress.org/reference/functions/wp_enqueue_script/#user-contributed-notes