У меня есть скрипт 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-адрес (в зависимости от сеанса будет создаваться другая форма)