【问题标题】:Wordpress AJAX, Jquery portion sends data but PHP function doesn't runWordpress AJAX,Jquery 部分发送数据但 PHP 函数不运行
【发布时间】:2017-06-16 19:35:01
【问题描述】:

这是当有人单击 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');

【问题讨论】:

  • ajax 'type' 应该是 post 的 'method'。另外,我强烈建议您不要使用 die() 命令。
  • 我使用它是因为在执行 Wordpress AJAX 时显然需要在 PHP 函数中使用它。另外,我将类型更改为方法,似乎仍然不起作用。 javascript 部分确实将数据发送到 AJAX.php 文件,但 functions.php 中的 PHP 似乎甚至没有运行。我将它设置为回显接收到的任何内容,但它似乎没有回显任何内容。

标签: php jquery ajax wordpress


【解决方案1】:

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

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

到这里:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 2012-07-19
    相关资源
    最近更新 更多