【问题标题】:Submitting 2 forms on one click - one form relies on results from the other one一键提交 2 个表单 - 一个表单依赖于另一个表单的结果
【发布时间】:2014-05-09 14:25:46
【问题描述】:

情况是这样的 - 在我的订单页面上,我有 2 个表单:总共有“订单提交”和“Pay Paypal 按钮”。客户必须提交 2 个表单(一个接一个) - 我想把它带回一个提交。

设置:

表格 1:调用提交时发送到 Commerce 的 submit.php 脚本(计算 + 订单数组)。

表格 2:调用 Paypal 脚本支付总额。

现在的工作方式:客户提交表格 2 (Paypal),Ipn.php 在接受付款时收到“完成”通知,并使用付款信息更新 DBase。 然后客户必须提交表格 1,从 Dbase 更新付款信息(支付金额 = 0)。 Commerce 通过更新的付款信息获取订单。

我希望客户只提交表格 2 (Paypal),其余部分自动完成。

A) 来自 Dbse 的表格 1 更新

B) 表格 1 在更新后自动提交。

我的 php 文件。

1) submit.php(我可以控制它)

2) Paypal(我无法控制)

3) Ipn.php(我可以控制它)

表格一:

  <form action="../../order/submit.php" id="Formulaire" method="post" name="Formulaire" target="preview">

  <button id="submit" class="buttonsubmit" name="_Commande" onclick="return checkform();" type="submit">
         Order / Commandez </button>

表格2:

 <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" name="Paypal" target="_blank" id="Paypal">

 <button class="buttonsubmitpaypal" id="buttonpaypal" name="_Paypal" onclick="alert('IMPORTANT: you MUST come back WITHOUT refreshing browser, click PREVIEW to reflect payment then SUBMIT your order.');PayPalSubMitFinal();" />

我看到一篇文章可能是我的解决方案,虽然(因为我不是程序员 - 但我可以适应),但我不确定它是否适合我,我不太了解如何实现:

Submit forms, one after another with jQuery?

我正在考虑的解决方案,不确定是否现实:

将 Ipn.php 集成到我的 Submit.php 脚本中,当 Paypal 发送“已完成”通知时,它会触发提交机制。不知道如何实现“if 的侦听部分”。但是,脚本将无法从订单 1 中获取信息......所以......

感谢您的提示。

更新 - 下面建议的测试解决方案:

我在 submit.php 表单中集成了 ipn.php,并在收到“已完成”通知时添加:

  $emailto = 'me@me.ca';      // this is to ckeck if it works - I receive it.
  $subject = $_POST['payment_status'];
  $text ="success submit IPN". $_POST['custom'];
  $headers = 'From: "" <"' . $_POST['payment_status']. '">'. "\r\n".
  "Content-type:text/html;charset=iso-8859-1" . "\r\n";
  mail($emailto, $subject, $text, $headers);

// 然后我触发提供的脚本(我在其他地方测试过,它可以工作)

  $click = '<script type="text/javascript">window.top.parent.parent.submitsubmit();</script>';
  echo $click;

脚本本身:

 function submitsubmit() {
 $("#submit").click();
 }

结果:提交按钮未触发。我看不出有什么问题。

我在这里用一个新问题简化了我的问题:

Can we trigger a script on original window even if script runs in _blank window

【问题讨论】:

  • 为什么不直接在用户提交第二个表单时运行整个流程?

标签: php jquery forms form-submit


【解决方案1】:

一旦 Paypal 发送 Completed 通知,您就可以使用 jQuery 检测并提交第二个表单。您将需要包含 jQuery。
jQuery 包括 (HTML/PHP):

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

检查并提交代码:

if(completed) {        // Assuming completed is a variable representing the
// state of the completed notice
    $("#submit").click();
    // "submit" is the ID of the second form's submit button.
    // This statement selects this button and clicks it, which fires the
    // form's action attribute as it would if the user clicked Submit.
}
else {
    throw new Error("Paypal form not submitted");
    location.href = "paypalform.html";
}

希望这对您有所帮助。
-CE

【讨论】:

  • 我们在路上! “已完成”是 Ipn.php 从 Paypal 收到确认时保存在我的 Dbase 中的数据。因此,根据您的输入,我怎么能(在我的 submit.php 脚本中)编写如下内容:每当有问题的 db 字段返回“已完成”{ $("#submit").click(); }
  • 好的,我想我知道怎么试了,我会报告的!
  • 我测试过(见原贴-最后更新)。到目前为止没有成功。
  • @user3371049:我在那里用 Javascript 编写。要检查数据库字段,您需要 PHP。一种可能的方法是使用 PHP 脚本检查您的数据库,并将 echo 结果放入 CSS-hidden &lt;div&gt;。然后你可以用 jQuery 获取内容:$("#hidden-div").text();,如果是某个值,请按上述方式提交表单。
  • 或者刚刚再次查看问题,而不是回显结果,而是在 PHP 中对其进行测试,并使用提交代码回显 &lt;script&gt;
猜你喜欢
  • 1970-01-01
  • 2014-12-07
  • 1970-01-01
  • 1970-01-01
  • 2014-07-11
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
相关资源
最近更新 更多