Amp-html: amp-form, что работает на верхней странице и amp-iframe - PullRequest
0 голосов
/ 05 октября 2019

У меня есть скрипт amp-form, который должен работать на полной странице, а также внутри iframe. Он работает как страница усилителя в порядке , но не работает в amp-iframe. Проверка на стороне клиента работает в iframe, но кнопки отправки не работают вообще. Ниже приведены примеры кода:

Страница и содержимое формы находятся на одном сервере. $ HOST расширяется до https://amp.localhost/

    <amp-iframe
      title="Testing"
      height="320"
      layout="fixed-height"
      sandbox="allow-scripts allow-popups allow-forms allow-modals allow-top-navigation"
      frameborder="0"
      src="{$HOST}tests_intro.php?turbo=1&iframe=1">
      <div placeholder></div>
    </amp-iframe>

Форма. значение url увеличивается до https://amp.localhost/...

<form action-xhr="tests_answer_xhr.php" 
method="post" id="qform" name="checkform" target="_top"
on="submit-success:AMP.navigateTo(url='<?php print $HOST.HumanURI ( 'tests_answer.php', $_SESSION ['testid'] ) . ($iframe ? '?iframe=1' : ''); ?>')">
<input type="submit" class="button-right"
  value="Дальше" name="nextQuestion">
<input type="submit" class="button-left"
  value="Назад"
  on="tap:AMP.navigateTo(url='tests_answer_xhr.php?prevQuestion=1">

Во время написания вопроса я выясняю, какая форма отправлена, но успешно отправлена: AMP.navigateTo не выполнен. Итак, вот сценарий xhr, упрощенный:

<?php
if ($_POST['nextQuestion'] && $_POST ['questionId']) {
    echo json_encode(array('submitsuccess'=>'1'));
    exit ();
}
http_response_code(403);
$responce['message']="Error.";
echo json_encode($responce);

Обычно эта форма должна хранить некоторое значение в сеансе и перенаправляет iframe на тот же URL-адрес (в зависимости от сеанса будет создаваться другая форма)

...