我有AMP中的HTML表单,带有POST操作;电子邮件的PHP文件使用Sendgrid API。我尝试了Json重定向的headers响应,但不起作用。
出于这个原因,我应用了JavaScript重定向(是的,我知道,这会为AMP验证生成错误,但我需要重定向到跟踪在线转换的感谢页面)。
PHP文件工作正常,所有电子邮件都是发送的,但没有JavaScript重定向,只有电子邮件发送的div成功或错误,只有我看到发送电子邮件的错误,但是,矛盾的是,所有电子邮件都是发送的(通过Sendgrid API,LOL没有问题)。
所以,我需要重定向超文本标记语言联系表单与正确的PHP头Json响应(没有JavaScript),跟踪在线转换和正确验证我的AMP超文本标记语言源。在其他情况下,我认为它是非常有用的使一个正确的重定向从PHP文件后成功提交(我尝试重定向与头位置在PHP,但,不工作...)
表格:
<form method="post"
class="p2"
action-xhr="//example.com/path/themex/amp-theme/path/file.php"
target="_top">
<div class="ampstart-input inline-block relative m0 p0 mb3">
<input type="text"
class="block border-none p0 m0"
name="name"
placeholder="Nombre"
required>
<input type="tel"
class="block border-none p0 m0"
name="tel"
placeholder="Teléfono"
required>
</div>
<select name="store"
id="store">
<option value="San Antonio">San Antonio</option>
<option value="Santiago Centro">Santiago Centro</option>
<option value="San Bernardo">San Bernardo</option>
<option value="Puente Alto">Puente Alto</option>
<option value="Rancagua">Rancagua</option>
<option value="Chillán">Chillán</option>
<option value="Talca">Talca</option>
<option value="Concepción">Concepción</option>
<option value="Los Ángeles">Los Ángeles</option>
<option value="Linares">Linares</option>
<option value="Valdivia">Valdivia</option>
<option value="Temuco">Temuco</option>
<option value="Puerto Montt">Puerto Montt</option>
</select>
<label for="sucursal"
class="absolute top-0 right-0 bottom-0 left-0">Selecione una Ciudad</label>
<input type="submit"
value="Enviar"
class="ampstart-btn caps" onclick="redirectThanks()">
<script>
function redirectThanks() {
window.location = "https://www.example.com/thanks-page/amp/";
}
</script>
<div submit-success>
<template type="amp-mustache">
Success! Thanks {{name}} for trying the
<code>amp-form</code> demo! Try to insert the word "error" as a name input in the form to see how
<code>amp-form</code> handles errors.
</template>
</div>
<div submit-error>
<template type="amp-mustache">
Error! Thanks {{name}} for trying the
<code>amp-form</code> demo with an error response.
</template>
</div>
</form>
PHP帖子:
<?php
/*SendGrid Library*/
require_once ('vendor/autoload.php');
/*Post Data*/
$name = $_POST['name'];
$tel = $_POST['tel'];
$store = $_POST['store'];
/*Content*/
$from = new SendGrid\Email("Sender", "no-reply@example.com");
$subject = "My Subject {$store}";
$to = new SendGrid\Email("Recipient", "address@example.com");
$content = new SendGrid\Content("text/html", "
Name: {$name}<br>
Phone: {$tel}<br>
Store: {$store}
");
/*Send the mail*/
$mail = new SendGrid\Mail($from, $subject, $to, $content);
$apiKey = ('mysendgridapikeyhash');
$sg = new \SendGrid($apiKey);
/*Response*/
$response = $sg->client->mail()->send()->post($mail);
header("Content-type: application/json");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: *.ampproject.org");
header("AMP-Access-Control-Allow-Source-Origin: https://www.example.com/");
header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin");
header ('AMP-Redirect-To: https://www.example.com/thanks-page/amp/');
?>
有什么想法吗?
我注意到您指定了一个Access Control Expose Headers标头,并且只添加了AMP Access Control Allow Source Origin。amp表单
文档说明amp重定向到的内容也需要公开。
试试这个:
header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin, AMP-Redirect-To");
如果这不起作用,请尝试打开浏览器开发人员工具,并在问题中添加任何控制台错误。如果出现任何问题,AMP框架通常会在控制台中编写非常有用的错误消息,这些消息对于诊断问题非常有用。
我正在使用oauth 1.0,到目前为止,我可以成功地从谷歌获得访问令牌。但是当我想从https://www.google.com/m8/feeds/contacts/default/full检索用户联系人时,它返回401错误,没有进一步的解释。 我发现来自Google playground的信息可能不太准确,例如,步骤3和步骤5中的签名基本字符串包含oauth_version,但它是错误的。(如
此函数工作正常。当当前工作表不是Google表单响应工作表时。我正在使用(每分钟)触发器 图像:沙子数据(主数据)表至(共享数据1)表 我正在寻找一个,当用户提交的谷歌表格的状态是(支付),数据应该在第二页,这是(shareData1) 这里的问题是,当我使用谷歌表单响应表时,这个函数将不再工作。它显示了一个错误。错误图像 在降级的错误图像中,我手动运行此函数,相同的错误显示在AppScript面
联系人名单 登录至联系人名单 确认登入状态 编辑联系人名单
最后编辑:现在一切正常工作将在下面的工作代码,清理后像idealCastle说,并修复了一些语法错误,一切正常工作,因为它应该与javascript验证谢谢大家 超文本标记语言代码: Javascript文件: PHP文件:
我正在为我的项目构建一个ajax/php联系表单,包含以下字段: 姓名(必填)、电子邮件(必填)、主题(必填)和网站(必填) 一切正常,现在唯一的问题是,如果用户没有在主题和或网站字段中键入任何内容,我收到的电子邮件显示这两个字段如下: 主题:(显示空白) 网址:(显示空白) 如果用户没有在我收到的电子邮件中键入任何内容,是否可能根本不显示这两个字段 名称:[用户名] 邮箱:[用户邮箱地址] 我只
我有一个正在写的剧本,需要一些帮助。 首先,我的脚本应该如何工作。 脚本:用户填写谷歌表单并点击提交。提交后,我的脚本运行并从google工作表中读取我在工作表中操作的一系列数据单元。然后将数据单元格格式化为字符串,并在表单的确认消息中提示。 现在问题来了。 问题:当我提交我对表格的回复时,从表格到表格的一切都很好。当我手动运行代码时,代码工作正常。当我提交表单响应时,事件历史记录会显示触发器并说