Не получаю данные постов от amp-формы - PullRequest
0 голосов
/ 19 марта 2019

Итак, я пытаюсь настроить форму усилителя, которая выступает в качестве основы для более крупной нормальной формы, но мне нужно также захватить данные из формы усилителя для наших сегментированных и аналитических данных.Я пытаюсь сделать это со средней страницей, на которую отправляет форма усилителя, которая будет захватывать и пересылать данные, а затем перенаправлять пользователя и его данные в полную форму.

Я настроил форму усилителя,Упрощенный код выглядит следующим образом (упрощено для одного поля для публикации здесь, но проверено и та же проблема):

<form class="amp-lead-form" method="post" action-xhr="<?php get_site_url() ?>/submit-amp-form.php" target="_top" custom-validation-reporting="show-first-on-submit">
  <fieldset style="border: none;">
    <label>
      <input class="text_input" type="text"
             id="first_name"
             name="first_name"
             placeholder="First Name"
             required
             pattern="([a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð,.'-])\w+">
      <span visible-when-invalid="valueMissing"
                validation-for="first_name"><br>Please enter your first name.</span>
      <span visible-when-invalid="patternMismatch"
            validation-for="first_name">
         <br>Please enter just your first name.</span>
    </label>
    <div style="clear: both;"></div>
    <input class="amp-form-submit" type="submit" name="submit" value="GET STARTED">
  </fieldset>
</form>

Код средней страницы выглядит следующим образом (это голые кости для проверки формы, безопасности ивсе остальное, что мне нужно, будет добавлено, как только я получу данные):

<?php
require_once( dirname( __FILE__ ) . '/wp-load.php' );
$domain_url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://".get_site_url();

header("Content-type: application/json"); //I also tried with multipart/form-data and application/x-www-form-urlencoded
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: ". str_replace('.', '-',get_site_url()) .".cdn.ampproject.org");
header("AMP-Access-Control-Allow-Source-Origin: " . get_site_url());
header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin");
header("AMP-Redirect-To: ".get_site_url()."/submit-amp-form.php");
header("Access-Control-Expose-Headers: AMP-Redirect-To, AMP-Access-Control-Allow-Source-Origin");

//dump data to page so I can view
$data = file_get_contents('php://input');
var_dump($data);
var_dump($_POST);
?>

Сейчас на средней странице отображаются только данные, поэтому я вижу, что они отправляются правильно, но отображается следующее:

DATA: 
string(0) ""
array(0) {
}

Что говорит о том, что данные не отправляются или не принимаются должным образом.Когда я изменяю метод формы get и action-xhr на action, он отправляет и получает данные get.Я исследовал Интернет и обнаружил, что обычно это означает, что конечная точка не реализует защиту CORS, но я считаю, что у меня есть все необходимые заголовки на странице, поэтому я действительно не знаю, куда идти дальше.Любая помощь?

1 Ответ

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

Если это проблема с CORS, вы увидите, что в консоли вашего браузера появляются ошибки, указывающие на CORS.Вы это проверяли?Ваша консоль должна дать вам хороший совет, где ошибка.Я предполагаю, что вы не получаете приемлемый ответ от вашей конечной точки.Это может быть связано с вашим var_dumps в конце.

...