【问题标题】:Cakephp Send Multiple Form at once didnt work on mozillaCakephp一次发送多个表单在Mozilla上不起作用
【发布时间】:2014-04-17 04:43:12
【问题描述】:

我在一个页面中有两个表单。而且我需要通过单击提交表单。

我使用以下代码:

表格:

<?php echo $this->Form->create('Payment', array('id' => 'addToDB', 'type' => 'post')); ?>
<?php echo $this->Form->input('merID'); ?>
<?php echo $this->Form->input('card_number', array('label'=>false, 'min'=>16, 'type'=>'select')); ?>
<?php echo $this->Form->input('name_on_card', array('label'=>false, 'type'=>'select')); ?>
<?php echo $this->Form->input('security_code', array('label'=>false, 'type'=>'select')); ?>
<?php $options = array
    (
    'label' => 'Submit',
    'id' => 'submit',
    'div' => array(
    'class' => 'glass-pill',
    )
); 
?>
<?php echo $this->Form->end($options); ?>

<?php echo $this->Form->create('Payment', array('id' => 'paymentGateway', 'type' => 'post', 'url' => 'https://uat.pbbank.com/payment/dpayment.jsp')); ?>
<?php echo $this->Form->input('merID'); ?>
<?php echo $this->Form->input('card_number', array('label'=>false, 'min'=>16, 'type'=>'select')); ?>
<?php echo $this->Form->input('name_on_card', array('label'=>false, 'type'=>'select')); ?>
<?php echo $this->Form->input('security_code', array('label'=>false, 'type'=>'select')); ?>
<?php $options = array
    (
    'label' => 'Submit',
    'id' => 'submit2',
    'div' => array(
    'class' => 'glass-pill',
    )
); 
?>
<?php echo $this->Form->end($options); ?>

java脚本:

$(document).ready(function () {
        $("#submit2").click(function () {
            $.post($("#addToDB").attr("action"), $("#addToDB").serialize(),
              function () {
                  alert('Add to Database submitted');
              });

            $.post($("#paymentGateway").attr("action"), $("#addToDB").serialize(),
              function () {
                  alert('Payment Gateway submitted');
              });
        });
    });

在 chrome 上可以正常工作,但在 mozilla 上不行。 有人可以帮帮我吗。提前致谢。

【问题讨论】:

  • 首先,您在第二个$.post 中使用$("#addToDB").serialize() 而不是$("#paymentGateway").serialize()。您能否提供表单 HTML 和您遇到的错误?
  • @Zudwa 我已经更新了我的问题。我没有收到任何错误。好像只提交了 1 个表单。
  • 您正在尝试向另一个域发出 ajax 请求。由于安全原因,这受到限制。您可以使用 JSONP 请求来使其工作。请注意,您只能发出 GET 请求,而不能发出 POST。并且不要忘记防止在.click() 中单击默认事件,否则除了 ajax 调用之外,您的表单也会正常提交。您可以在此处阅读有关发出 JSONP 请求的信息 link
  • @Zudwa 嗨,我试着理解你的解释。但我没明白。我以前从未使用过 JSONP。你能给我举个例子吗?
  • uat.pbbank.com 是您的域吗?我的意思是,你在开发它的后端吗?

标签: jquery forms cakephp form-submit mozilla


【解决方案1】:

您的解决方案很差。

  1. 您只需要一张表格
  2. 您需要包装(序列化)您的表单[paymentGateway] 和
  3. 向支付网关发送请求
  4. 然后当你得到结果OK
  5. 将您的数据保存到数据库中

    $("#submit2").click(function () {
       //wrap your form once
       $data = $("#addToDB").serialize();
    
        $.post($("#paymentGateway").attr("action"), $data,
          function (firstresult) {
              //if Payment Gateway result is correct 
              if (firstresult==OK){
                   //then save it into Database
                   $.post($("#addToDB").attr("action"), $data,
                   function (secondresult) {
                          if (secondresult) {
                                alert('Payment Successful');
                          }
                    });
              }
          });
    });
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多