@Nik_1011

Не могу вывести результат получаемый от Google recaptcha v2, как это можно сделать?

Есть форма обратной связи, при отправке работает ajax, отправляет в обработчик php, все класно, письма уходят. Добавил капчу,тоже все работает и если подставить реальные значения капчи сюда,то ответ приходит "success" (https://www.google.com/recaptcha/api/siteverify?secret=". $secret . "&response=" . $captcha).

Но стоит в php-обработчик добавить "echo", код не выполняется. Не могу понять, что не так.PHP не влез, вот здесь он.

$(document).on('submit', '[data-form="simple"]', function (event) {
  event.preventDefault();
  var $form = $(this),
  $submit_btn = $form.find('[type="submit"]'),
  formData = new FormData($form[0]),
  captcha = grecaptcha.getResponse(),
  formName = $form.attr('name');

  if ($submit_btn.hasClass('sending')) {
    return false;
  }

  formData.append('action', 'submit_simple_form');
  formData.append('form_name', formName);
  formData.append('g-recaptcha-response', captcha);
  $form.find('.form__files-list').each(function (i, el) {
    var $list = $(el),
    key = $list.siblings('.form__files-input').attr('name') + '[]';
    $list.find('.form__files-item').each(function (i, el) {
      formData.append(key, $(el).data('file'));
    });
  });
  $submit_btn.addClass('loading');
  $.ajax({
    type: 'POST',
    url: ajaxInfo.url,
    data: formData,
    dataType: 'JSON',
    processData: false,
    contentType: false,
    success: function success(response) {
      if (0 == response) {
        console.log('Сервер вернул пустой ответ');
      } else if ('success' == response.status) {
        console.log(captcha);
        reset_forms($form);
        showSuccessModal('Спасибо!', formName === 'testimonial-modal' ? 'Ваш отзыв появится на нашем сайте после успешной модерации нашим менеджером.' : 'Наш менеджер в ближайшее рабочее <br/> время перезвонит вам.');
        // dataLayer.push({'event': 'success.form'});
      } else if ('fail' == response.status) {
        add_form_errors($form, response.data.errors);
      } else {
        console.log('Неверный формат ответа от сервера');
      }
    },
    error: function error(jqXHR, textStatus, errorThrown) {
      alert('Произошла ошибка соединения с сервером. Попробуйте еще раз или немного позже.');
      console.log(textStatus + ': ' + errorThrown);
    },
    complete: function complete() {
      $submit_btn.removeClass('loading');
    }
  });
});
  • Вопрос задан
  • 303 просмотра
Пригласить эксперта
Ответы на вопрос 2
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
Для чего вам вообще echo в обработчике?
Что за функция send_ajax_response - не понятно, но похоже на аналог wp_send_json,

Если на пальцах, то ваш скрипт разбирает ответ как json объект, и если видит там всякое лишнее то соответственно не работает. Делайте рефакторинг обработчика
Ответ написан
Комментировать
@rPman
вангую что скрипт обработчика сначала формирует строку ответа а потом выводит заголовки ответа и сформированную строку, соответственно если что-либо вывести перед выводом заголовков, вылетает ошибка

чтобы понять что происходит, нужно смотреть сообщения об ошибках на веб сервере

p.s. отладочные логи выводи не в ответ с помощью echo а пиши в файл
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы