Администратор Wordpress Ajax 400 (неверный запрос)

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

    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);
        }
    });
});

Вы можете получить отличный ответ здесь WordPress Аякс

Mohammad Ashique Ali 08.03.2019 09:46
wordpress.stackexchange.com/questions/291301/…
Yassine CHABLI 08.03.2019 09:47

вы добавили действие?

Yassine CHABLI 08.03.2019 09:49

Это не вопрос. Пожалуйста, прочитайте, как Задайте хороший вопрос.

cmprogram 08.03.2019 09:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
4
4 727
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

во-первых, вы не должны писать 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' );

С уважением

Все вызовы 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'];
}
Ответ принят как подходящий

Процесс 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.info( response );
}

Другие вопросы по теме