无法从amp形式

时间:2019-03-19 00:48:01

标签: javascript php amp-html

因此,我正在尝试建立一个作为较大范式的边框的amp表格,但我需要从该amp表格以及我们的细分和分析数据中获取数据。我正在尝试使用amp表单发布到的中间页面来执行此操作,该页面将捕获并转发数据,然后将用户及其数据转发到完整表单。

我设置了放大器形式,简化的代码如下(简化为要在此处发布的一个字段,但经过测试且具有相同的问题):

<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 :(得分:0)

如果是CORS问题,您会在浏览器的控制台中看到错误提示您CORS。 你检查了吗?您的控制台应为您提供错误提示的好提示。 我猜您没有从端点得到可接受的响应。 这可能是由于您的var_dumps结尾。