与Firefox的ajax兼容性问题

时间:2014-10-22 15:17:20

标签: php ajax firefox browser

您好我创建了一个网站,其中有一个表单,其中的操作指向paypal付款。在指向paypal页面之前,我创建了一个ajax脚本,它将读取一个外部php文件,该文件会在指向paypal之前将表单中的其他数据保存到数据库中。我使用IE和Chrome工作,但由于某些原因,我不知道为什么它不会使用Firefox 20.0.1保存数据。

我想要的是我想让它在 Firefox 中运行。由于此代码在IE和Chrome中运行。

继承我的内部ajax脚本:

<script>
    $(function () {
        $('#senrollnow').on('submit', function (e) {
          $.ajax({
            type: 'post',
            url: 'insert.php',
            data: $('#senrollnow').serialize(),
            success: function () {
              alert('form was submitted'+data);
            }
          });
        });
      });
</script>

我的HTML表单(index.php):

<form action="https://www.paypal.com/cgi-bin/webscr" name="ligit" method="POST" id="senrollnow" target="_top" >
                            <div class="row">
                                <div class="large-12">
                                    <div class="row">
                                        <div class="large-6 columns">
                                            <input type="text" placeholder="First Name" name="first_name" required />
                                        </div>
                                        <div class="large-6 columns">
                                            <input type="text" placeholder="Last Name" name="last_name" required />
                                        </div>
                                    </div>
                                    <div class="row">
                                        <div class="large-12 columns">
                                            <input type="email" placeholder="Email" name="email" required />
                                        </div>
                                    </div>
                                    <div class="row">
                                        <div class="large-12 columns">          

                                            <input type="hidden" name="on0" value="Courses Options">Courses Options
                                            <select name="os0">
                                                <option value="Basic (30 mins)">Basic (30 mins) : $69.00 AUD - monthly</option>
                                                <option value="Basic (1 hour)">Basic (1 hour) : $129.00 AUD - monthly</option>
                                                <option value="Standard (30 mins)">Standard (30 mins) : $69.00 AUD - monthly</option>
                                                <option value="Standard (1 hour)">Standard (1 hour) : $129.00 AUD - monthly</option>
                                                <option value="International (30 mins)">International (30 mins) : $69.00 AUD - monthly</option>
                                                <option value="International (1 hour)">International (1 hour) : $129.00 AUD - monthly</option>
                                            </select> 
                                        </div>
                                    </div>
                                    <br/>
                                    <div class="row">
                                        <div class="large-12 large-centered columns text-center">
                                            <input type="hidden" name="currency_code" value="AUD">
                                            <input class="pulse-shrink" type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
                                            <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
                                            <!--<input id="button_enroll" type="submit" name="ligit" placeholder="Email" class="button" value="Enrol Now!" /> -->
                                        </div>
                                    </div>
                                    <a class="close-reveal-modal">&#215;</a>
                                </div>
                            </div>
                        </form>

我的PHP:insert.php

require_once "dbconfig.php";

// escape variables for security
$firstname = mysqli_real_escape_string($con, $_POST['first_name']);
$lastname = mysqli_real_escape_string($con, $_POST['last_name']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$type = mysqli_real_escape_string($con, $_POST['os0']);

$date = date_create();
$created = date_format($date, 'Y-m-d H:i:s');

$sql="INSERT INTO student (first_name, last_name, email, type, created)
VALUES ('$firstname', '$lastname', '$email', '$type', '$created')";

if (!mysqli_query($con,$sql)) {
  die('Error: ' . mysqli_error($con));
}

header('Location: index.php');

1 个答案:

答案 0 :(得分:3)

据我了解,您希望在提交之前加载一些数据,然后在默认情况下发送表单数据之后

我必须做的事情是将表单发送到paypal和您的服务器。 一种方法是发送ajax表单并调用event.preventDefault()以防止默认提交表单 成功回调你可能会提交。

最简单的原始方法是添加一个类来形成例如。

$('#senrollnow').on('submit', function (e) {
      var form = $(this);
      if(!form.hasClass('pending')) {
          e.preventDefault();
          form.addClass('pending');
          $.ajax({
              type: 'post',
              url: 'insert.php',
              data: $('#senrollnow').serialize(),
              success: function () {
                form.submit();
                // alert('form was submitted'+data);
              }
          });
      }
});