Intereting Posts
Как я могу запросить сообщение по настраиваемому полю? Изменить заголовок (логотип) на основе входа Фильтровать по настраиваемому полю (meta_key) с использованием JSON API Как отображать следующие и предыдущие ссылки на страницы с помощью WP_User_Query? Лучший способ заказать пост в доме без плагина Проблема с использованием Customizer Печатать содержимое страницы с форматированием при выполнении пользовательского SQL-запроса Экран входа в WordPress AJAX WordPress, получающий css и файлы сценариев с клиентской машины, а не на серверной машине Отфильтровать сообщения в текущем месяце Заказ сообщений по пользовательской таксономии в области администрирования Вставьте термины для пользовательской таксономии при активации плагина или каждой загрузки страницы (крючок инициализации) Пользовательские операторы WordPress Feeds? Как загрузить локальные изменения на живой сервер без переопределения новых сообщений / страниц? (Разрешено) Как добавить кнопку подменю для переключения всех элементов «li», имеющих подменю?

Создание запроса ajax из другого домена

Я делаю запрос ajax из моего основного домена в субдомен. Я решил проблемы с перекрестным происхождением, поэтому я не получаю ошибку. Вызов возвращает data:0 . Я проверил конфигурацию своего ответа и правильный URL-адрес ajax, а также «действие». Мои functions.php выглядят так:

 add_action("wp_ajax_sendhire", "sendhire"); add_action("wp_ajax_nopriv_sendhire", "sendhire"); function sendhire() { $cars = array("Volvo", "BMW", "Toyota"); return json_encode($cars); die(); } 

Данные, очевидно, предназначены только для тестирования.

Если вы хотите использовать Admin-Ajax для вывода содержимого, вы должны использовать echo . Нет ничего, что можно было бы увидеть, когда вы используете return , так что вы получите 0 .

Эта цитата из кодекса дополнительно объясняет ответ 0 :

Если запрос Ajax завершится с ошибкой в wp-admin/admin-ajax.php , ответ будет равен -1 или 0, в зависимости от причины сбоя. Кроме того, если запрос выполняется успешно, но действие Ajax не соответствует крюку WordPress, определенному с помощью add_action('wp_ajax_(action)', ...) или add_action('wp_ajax_nopriv_(action)', ...) , тогда admin-ajax.php ответит 0.

Теперь, если вы собираетесь выдать ответ JSON, вы должны взглянуть на REST API. Его тип ответа по умолчанию – JSON.

Для этого зарегистрируйте путь для конечной точки и создайте функцию обратного вызова:

 add_action( 'rest_api_init', function () { register_rest_route( 'dcp3450', '/test_endpoint/', array( 'methods' => 'GET', 'callback' => 'sendhire' ) ); }); function sendhire() { $cars = array("Volvo", "BMW", "Toyota"); return $cars; } 

Теперь, получив доступ к http://example.com/wp-json/dcp3450/test_endpoint/ вы получите ответ JSON, и вы можете избавиться от этого досадного 0, следующего за человечеством до конца.