Wordpress Admin Ajax 400 (Неверный запрос) - PullRequest
0 голосов
/ 08 марта 2019

Я использовал Wordpress Admin Ajax, и консоль показывает, что 400 (Bad Request)

    jQuery('#submitid').click(function(e){
    e.preventDefault();
    //var newCustomerForm = jQuery(this).serialize();

    jQuery.ajax({
        type: "POST",
        url: "wp-admin/admin-ajax.php",
        data: {status: 'status', name: 'name'},
        success:function(data){
             jQuery("#result").html(data);
        }
    });
});

Ответы [ 3 ]

0 голосов
/ 08 марта 2019

Все вызовы Wordpress Ajax должны иметь параметр action, который указывает на перехват wp_ajax_{action_param} или wp_ajax_nopriv_{action_param}, и оттуда вы переходите к функции из этих перехватчиков.

С Кодекс :

add_action( 'wp_ajax_my_action', 'my_action' );
add_action( 'wp_ajax_nopriv_my_action', 'my_action' );

function my_action() {
    $status = $_POST['status'];
}
0 голосов
/ 08 марта 2019

У процесса Wordpress AJAX есть несколько основных моментов, которым нужно следовать, если вы хотите, чтобы он работал правильно:

1. В functions.php добавьте действие, которое вы хотите вызвать из внешнего интерфейса:

function logged_in_action_name() {
  // your action if user is logged in
}
function not_logged_in_action_name() {
  // your action if user is NOT logged in
}

add_action( 'wp_ajax_logged_in_action_name', 'logged_in_action_name' );
add_action( 'wp_ajax_nopriv_not_logged_in_action_name', 'not_logged_in_action_name' );

2. Зарегистрируйте объект локализации в functions.php

// Register the script
wp_register_script( 'some_handle', 'path/to/myscript.js' );

// Localize the script with new data
$some_object = array(
    'ajax_url' => admin_url( 'admin-ajax.php' )
);

wp_localize_script( 'some_handle', 'ajax_object', $some_object );

// Enqueued script with localized data.
wp_enqueue_script( 'some_handle' );

3. Создайте запрос AJAX на внешнем интерфейсе

// source: https://codex.wordpress.org/AJAX_in_Plugins
var data = {
  'action': 'not_logged_in_action_name',
  'whatever': 1234
};

jQuery.post( ajax_object.ajax_url, data, function( response ) {
  console.log( response );
}
0 голосов
/ 08 марта 2019

сначала вы не должны писать URL самостоятельно. Вы можете использовать функцию локализации, чтобы добавить URL в ваш файл JavaScript:

wp_enqueue_script('myHandle','pathToJS');

wp_localize_script(
   'myHandle',
   'ajax_obj',
    array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) )
);

После этого вы можете использовать ajax_obj.ajax_url в вашем скрипте для получения URL.

Во-вторых, вы применили правильный хук?

// Only accessible by logged in users
add_action( 'wp_ajax_my_action', 'my_action_callback' );
// Accessible by all visitors
add_action( 'wp_ajax_nopriv_my_action', 'my_action_callback' );

С наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...