firefox的ajax兼容性问题


ajax compatibility issues with firefox

嗨,我创建了一个网站,它有一个指向贝宝支付的表单。在指向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');

据我所知,您希望在提交之前将一些数据加载到表单中,然后通过默认方式发送表单数据

我认为你必须做的行动发送表单到贝宝和你的服务器分别。一种方法是发送ajax表单并调用event.prventDefault()来阻止默认提交表单在成功回调时,您可以进行提交。

最简单的基本方法是添加一个类来形成例如

$('#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);
              }
          });
      }
});