wordpress ajax请求未到达后端功能

问题描述 投票:0回答:1

我有错误请求 400 以及functions.php 中的ajax 对象本地化代码:

get_template_part('inc/ajax_functions');
function enqueue_theme_assets(){
wp_enqueue_script('ajax_functions', WDD_JS . 'ajax_functions.js', [] , filemtime(WDD_JS_PATH . 'ajax_functions.js'));
    wp_localize_script('ajax_functions', 'WDD_ajax_object', [
        'WDD_ajax_url' => admin_url('admin-ajax.php'),
        'WDD_ajax_nonce' => wp_create_nonce('WDD_ajax_nonce')
    ]
    );
}
add_action('wp_enqueue_scripts', 'enqueue_theme_assets');

这是ajax_functions.js中的javascrit函数:


jQuery.noConflict();
jQuery(document).ready(function ($) {

  const data = {
    action: 'get_branches',
    security: WDD_ajax_object.WDD_ajax_nonce
  };
  console.log(WDD_ajax_object.WDD_ajax_url);
  jQuery.ajax({
    url: WDD_ajax_object.WDD_ajax_url,
    type: 'POST',
    data: data,
    processData: false,
    contentType: false,
    success: function (response) {
      if (response.success === false) {
        console.log('Request failed.' + response.data.error);
      } else {
        console.log(response.data);
      }
    },
    error: function (xhr, status, error) {
    }
  });


});

这是 inc/ajax_functions.php 中的 php 函数:


function get_branches_callback()
    {
    if (!check_ajax_referer('WDD_ajax_nonce', 'security', false)) {
        wp_send_json_error(array('error' => 'Invalid security token.'));
        }

    
    die();

    }


add_action('wp_ajax_get_branches', 'get_branches_callback');
add_action( 'wp_ajax_nopriv_get_branches_callback', 'get_branches_callback' );

这是ajax请求中数据对象的控制台日志:

{action: 'get_branches', security: 'eefbd1e431'}

因此ajax对象已经创建并且ajax处理函数存在于全局$wp_filter中, 但呼叫从未到达该功能任何人都可以帮助我解决这个问题吗

javascript php jquery ajax wordpress
1个回答
1
投票

我认为问题在于对非私人用户使用了不正确的操作名称。这是一个更正的示例:

function get_branches_callback() {
    if ( ! check_ajax_referer( 'WDD_ajax_nonce', 'security', false ) ) {
        wp_send_json_error( array( 'error' => 'Invalid security token.' ) );
    }
    die();
}
add_action( 'wp_ajax_get_branches', 'get_branches_callback' );
add_action( 'wp_ajax_nopriv_get_branches', 'get_branches_callback' );
© www.soinside.com 2019 - 2024. All rights reserved.