Asi*_*er 1 forms redirect amp-html
我有一个输入栏,必须在提交时重定向到另一个 https 页面(包含 google-search)。表单的代码如下:
<form class="navbar-form navbar-left hide-inputs buscadoMovilLine" role="search" target="_blank" action-xhr="https://www.tuotromedico.com/buscadorg.php" action="https://www.tuotromedico.com/buscadorg.php" method="get">
<div class="form-group buscador">
<input class="SearchInputMovil2 inl" type="text" placeholder="Buscar..." class="form-control" name="q">
<button class="inl" type="submit" class="btn btn-default"><i class="fa fa-search lupaBuscarMovilBoton2" aria-hidden="true"></i></button>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
我也添加了 amp-form 扩展。官方文档是这样说的:
提交后重定向 amp-form 还允许发布者在提交后通过 AMP-Redirect-To 响应标头将用户重定向到新页面。
请注意,您还必须更新 Access-Control-Expose-Headers 响应标头,以将 AMP-Redirect-To 包含到允许的标头列表中。
重定向 URL 必须是绝对 HTTPS URL,否则 AMP 会抛出错误并且不会发生重定向。
https://www.ampproject.org/es/docs/reference/components/dynamic/amp-form
但我不确定如何指定。
小智 7
我知道 2 种方式,这是针对节点的:
app.post('/register', function (req, res) {
let form = new formidable.IncomingForm();
form.parse(req, function (err, fields) {
res.setHeader('AMP-Access-Control-Allow-Source-Origin', 'https://example.com/');
if (fields.first_name && fields.last_name) {
res.setHeader('AMP-Redirect-To', 'https://example.com/some-key');
res.status(200).json(fields);
} else {
res.status(400).json({error: 'Please select a size.'});
}
});Run Code Online (Sandbox Code Playgroud)
第二,在放大器中你可以使用navigateTo()
<form class="proceed__form" method="post" id="requirements-form"
action-xhr="https://localhost:4040/check-requirements"
target="_top"
on="submit-success:AMP.navigateTo(url='https://google.com')"
>
</form>
OR you can get variable from response
(res.status(200).json({message: 'success', navigateTo: domain + '/profile'});)
<form class="proceed__form" method="post" id="requirements-form"
action-xhr="https://localhost:4040/check-requirements"
target="_top"
on="submit-success:AMP.navigateTo(url=event.response.navigateTo)"
>
</form>Run Code Online (Sandbox Code Playgroud)