【问题标题】:PHP Javascript Single Form Call Submit to Two FormsPHP Javascript 单表单调用提交到两个表单
【发布时间】:2016-11-18 23:14:48
【问题描述】:

你看到了吗?
submit a form inside another form

Submitting form data to two locations using Javascript and PHP?

他们都没有真正回答这个问题。

让我解释一下这个场景。我有一个要求提供姓名、电子邮件和电话号码的表格,它需要提交到两个不同供应商的两个地点。

1) 阿韦伯 2) 公司

一种可能性是创建一段 Javascript 代码,当人们单击“提交”时,它会将其发送到两个不同浏览器窗口中的两个表单调用(这将是我的首选方法)

第二种可能性是首先将其发送到 Aweber (autorespnder),然后将变量传递到自定义 PHP 页面。使用 $_GET 获取变量,然后将它们传递到自动表单提交中,然后将它们传递到发送给公司的第二个表单。

例如 - 我可以先将表单提交给 Aweber,然后将结果传递回 form.php:

$name = $_get['name'];
$email = $_get['email'];
$phone = $_get['phone'];

如果使用 Curl 或 javascript,表单的其余部分会是什么样子?

我尝试将变量传递到公司发布表单中。它不接受任何 GET 命令 - 它只接受 POST 命令,因此 CURL 可能不起作用,(除非有办法通过 CURL 发布表单?)

谁有一个优雅的解决方案,对最终用户来说看起来不错?

你有什么想法?提前致谢!

【问题讨论】:

  • 理想的解决方案可能是公司生成一个 API,然后 Aweber 在处理收到的数据后调用该 API 发送已清理的数据。
  • 我理解,这将是理想的,但他们还没有 API。还有其他想法吗?
  • 只需从处理 Aweber 上的表单的 PHP 脚本发送一个 post 请求。您可以使用 cURL 或其他多种方式从 PHP 发送 HTTP 请求。
  • 你能提供一个代码示例作为答案吗?我会在上面开始。
  • 这是用 AJAX 和 jQuery 做的相对简单的事情。

标签: javascript php jquery html forms


【解决方案1】:

没有任何真实数据可继续或真实表单可调用,这应该给出如何使用 AJAX 和 jQuery 的基本概念。

*更新

我更新了答案以显示如何将表单变量作为帖子而不是 get 传递。

HTML

<form id="test-form">
  <input type="text" id="name" name="name"/>
  <input type="submit" value="submit"/>
</form>

<p class="response1">
  Response 1 goes here
</p>
<p class="response2">
  Response 2 goes here
</p>

jQuery

$("#test-form").on("submit", function(e) {
  e.preventDefault(); //stops the form from actually submitting
  var root = 'https://jsonplaceholder.typicode.com';

  $.ajax({
    url: root + '/posts/1',
    method: 'POST',
    data: $("#test-form").serialize()
  }).then(function(data) {
    if(data) {
        $(".response1").text(data.title);
        $.ajax({
          url: root + '/posts/2',
          method: 'POST',
          data: $("#test-form").serialize()
        }).then(function(data) {
          if(data) {
            $(".response2").text(data.title);
          }
        });
    }
  });
})

显然,您必须正确设置 URL 并传递帖子数据,但这里不会发生这种情况,因为我没有用于查询接受帖子数据的 API。第一个表单提交后,它将数据发送到第二个表单。您如何处理数据将取决于服务器的响应。

小提琴:https://jsfiddle.net/calder12/t0fos3kk/1/

【讨论】:

  • 我知道你的脚本是如何做到的。您会在“此处的响应部分”中添加什么内容,以通过 POST 将表单提交到这两个不同的外部站点?例如,第一个 post call 是 action = "aweber.com/scripts/addlead.pl" 第二个 post call 是 = "companyform/form.php" 第二个 post call 不接受任何命令行变量 - 它只寻找一个 POST。
  • POST 调用的语法是什么?这些是针对外部网站的,因此不会有任何 API 可供查询。我们需要向每个站点提交一个单独的 POST 请求。
猜你喜欢
  • 1970-01-01
  • 2013-09-30
  • 1970-01-01
  • 2011-06-17
  • 2012-12-25
  • 1970-01-01
  • 2012-03-10
  • 2015-06-30
  • 1970-01-01
相关资源
最近更新 更多