【问题标题】:jquery form submit without hitting submit buttonjquery表单提交而不点击提交按钮
【发布时间】:2017-04-26 14:42:01
【问题描述】:

我已经创建了一个贝宝表单,但是我想在确认所有数据库查询并插入之后重定向贝宝信息,然后我希望表单应该自动提交并重定向到贝宝,所以我使用了一些 jQuery 这样做但是不幸的是,当我重新加载他的表单没有提交的页面时,任何人都可以帮助我

这是我的代码

<form action="listing.php" method="post">
                        <input type="hidden" name="business" value="<?php echo $paypal_id; ?>">
                        <input type="hidden" name="url" value="<?php echo $paypal_id; ?>">
                        <input type="hidden" name="paypal_url" value="<?php echo $paypal_url; ?>" />
                        <input type="hidden" name="cmd" value="_xclick">
                        <input type="hidden" name="item_name" value="Room Rent for <?php echo $data['name']; ?>">
                        <input type="hidden" name="item_number" value="<?php echo $_SESSION['id']; ?>">
                        <input type="hidden" name="credits" value="510">
                        <input type="hidden" name="userid" value="<?php echo $_SESSION['id']; ?>">
                        <input type="hidden" name="amount" value="<?php echo $total_cost; ?>">
                        <input type="hidden" name="start_time" value="<?php echo $start_time; ?>" />
                        <input type="hidden" name="end_time" value="<?php echo $end_time; ?>" />
                        <input type="hidden" name="agent_id" value="<?php echo $data['agent_id']; ?>" />
                        <input type="hidden" name="list_id" value="<?php echo $data['id']; ?>" />
                        <button type="submit" class="btn5 btn-primary btn-sm" name="book">Book Now</button>
                    </form> 

所以让我解释一下我在这里所做的是我在第一个表单中创建了 2 个表单我希望用户在用户提交所有信息时单击提交保存到数据库后它会生成一个自动 ID 最后一个 ID 并且我想要该 id 作为交易 id,所以我将该 id 发送到 paypal 并且没有表单的 paypal 我无法发送信息,这就是为什么我使用以下步骤来这样做的原因

  <?php
     if(isset($_POST['book'])) {
        $user_id   = $_POST['userid'];
        $agent_id  = $_POST['agent_id'];
        $list_id   = $_POST['list_id'];
        $business  = $_POST['business']; 
        $item_name = $_POST['item_name'];
        $item_num  = $_POST['item_number'];
        $amount    = $_POST['amount'];
        $item_num  = $_POST['item_number'];
        $start_time= $_POST['start_time'];
        $end_time  = $_POST['end_time'];
        $qry_sql   = mysqli_query($connection, "INSERT INTO bookings (user_id, agent_id, list_id, booking_date, start_time, end_time, price, status) VALUES ('$user_id', '$agent_id', '$list_id', '".date('d-m-Y')."', '$start_time', '$end_time', '$amount', 'Pending')");
        $trans_id  = mysqli_insert_id($connection); 
        if($qry_sql) {
            $co_ammount    = $amount / 100 * 25;
            $agent_ammount = $amount - $co_ammount;
            $due_date = date('d-m-Y', strtotime("+2 days"));
            $qry_sql1 = mysqli_query($connection, "INSERT INTO financial (agent_id, booking_id, order_date, due_date, total_ammount, agent_ammount, co_ammount, status) VALUES ('$agent_id', '$trans_id', '".date('d-m-Y')."', '$due_date', '$amount', '$agent_amount', '$co_ammount', 'Pending')");

?>
            <script>
            $('#frmPayPal1').submit();
            </script>
            <form action="<?php echo $_POST['paypal_url']; ?>" method="post" id="frmPayPal1">
                <input type="hidden" name="business" value="<?php echo $business; ?>">
                <input type="hidden" name="cmd" value="_xclick">
                <input type="hidden" name="item_name" value="<?php echo $item_name; ?>">
                <input type="hidden" name="item_number" value="<?php echo $trans_id; ?>">
                <input type="hidden" name="userid" value="<?php echo $user_id; ?>">
                <input type="hidden" name="amount" value="<?php echo $amount; ?>">
                <input type="hidden" name="no_shipping" value="1">
                <input type="hidden" name="currency_code" value="USD">
                <input type="hidden" name="handling" value="0">
                <input type="hidden" name="cancel_return" value="http://dev.uparksf.com/cancel.php?tx=<?php echo $trans_id; ?>">
                <input type="hidden" name="return" value="http://dev.uparksf.com/success.php">
            </form> 
    <?php } ?>      
<?php } ?> 

【问题讨论】:

    标签: javascript php jquery forms paypal


    【解决方案1】:

    将您的提交语句放在表单结束标记之后。 Javascript 是程序性的,因此通过将提交放在表单之前,您将在表单加载之前提交表单。

    【讨论】:

      【解决方案2】:

      你只需要做一件事,而不是

      <script>
           $('#frmPayPal1').submit();
      </script>
      

      应该是:

       <script>
          $(document).ready(function(){
              $('#frmPayPal1').submit();
          })
       </script>
      

      应该可以!

      【讨论】:

      • 它没有工作仍然没有重定向到贝宝,是否有可能它被放在页脚,只是因为它没有重定向?
      • 您确定paypal_url 的定义正确吗?你在这个页面中也有 jQuery 吗?尝试在提交代码旁边放一个console.log("I am here"),看看它是否被执行
      • 控制台日志中没有任何内容检查我也在更新表单
      • 我已经更新了表单并添加了第一步
      • 你能发布生成的表格吗?未提交的 - 但在创建后,来自浏览器的 html