Intereting Posts

Ajax-вызов из WP-страницы администратора OFTEN возвращает 0, но не всегда

Я делаю плагин, это в основном ВСЕ страница администратора – он должен просто общаться с одним из наших API.

Я смотрел далеко и широко, но не нашел точного такого же поведения, о котором сообщал кто-либо.

Вот моя настройка:

  • Visual Studio Professional 2015 (обновление 15.0.25431.01 3)
  • PHP-инструменты: PHP-версия 7.0.15
  • Версия WordPress в решении: 4.8.1

Я использую встроенный ajax WP через «ajaxurl» и вызывается методы со страницы администрирования плагина («…_ admin.php») на главную страницу плагина («…_ plugin.php»).

Администратор:

function dropdownUrlChanged(value) { ... jQuery.ajax({ type: "POST", url: ajaxurl, data: { 'action': "Funn_FSPA_Test", 'urlchange': value }, success: function (response) { alert(response); document.getElementById("playerContainer").innerHTML = response; }, error: function (errorTHrown) { alert(errorThrown); } }); ... } 

Проблема в том, что MOST времени, ответ 0. Нулевой. Странная часть состоит в том, что во ВСЕХ случаях вызывается метод «Funn_FSPA_Test», а ответ, отобранный или возвращаемый, NEVER 0.

Плагин:

 add_action( 'wp_ajax_Funn_FSPA_Test', 'Funn_FSPA_Test' ); ... function Funn_FSPA_Test() { global $class_Funn_FSPA_content; $urlchange = isset($_POST['urlchange']) ? $_POST['urlchange'] : null; if ($urlchange == null) { return 0; } $output = $class_Funn_FSPA_content->funn_FSPA_UrlChanged($urlchange); echo $output; wp_die(); } 

$ output – это html, который помещается в div playerContainer.

Интересная часть состоит в том, что всякий раз, когда я ИЗМЕНЯЮ что-то в Funn_FSPA_Test – используя return вместо echo, wp_send_json или любой другой твист, вывод работает для нескольких вызовов, прежде чем он снова вернется к тому, чтобы быть полученным как 0 снова. Во ВСЕХ случаях случайный вывод $ is is NOT 0.

Отдельный метод, структурированный аналогично Funn_FSPA_test, работает безупречно, каждый раз.

Вместо того, чтобы выполнять метод funn_FSPA_Url, я пытался эхо / вернуть фиксированные строки переменной длины, чтобы увидеть, есть ли какой-то странный предел:

  • Возвращается типичная строка HTML.
  • Эта же строка сжата с помощью gzcompress.
  • Сжатая строка, закодированная как Base64 с base64_encode.
  • Короткая строка типа «Hello World!».

Метод ведет себя одинаково во всех случаях. Иногда вывод получается хорошо, но в большинстве случаев (90%?) Возвращается только 0.

Резюме:

  • Метод, определенный в действии ajax, всегда выполняется.
  • Выход всегда не равен нулю при повторном / возврате из метода.
  • Выходной сигнал составляет 90% времени, ПОЛУЧЕННЫЙ как ноль.
  • Ошибка никогда не срабатывает.

Кто-нибудь знает, что дает?