проблемы совместимости ajax с firefox

Привет, я создал веб-сайт, который имеет форму, действия которой направлены на оплату PayPal. Прежде чем перейти на страницу PayPal, я создал сценарий ajax, который будет читать внешний php-файл, который сохранит мои другие данные в форме в базу данных, прежде чем перейти к PayPal. Я получил его работать с IE и Chrome, но по некоторым причинам, которые я не знаю, почему он не будет сохранять данные с помощью Firefox 20.0.1.

То, что я хочу, это то, что я хочу, чтобы это работало в Fire Fox. Так как этот код работает в 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');

0

Решение

как я понимаю, вы хотите загрузить некоторые данные в форму перед отправкой и после них отправили данные формы по умолчанию

Я считаю, что вы должны выполнить действия, отправив форму на 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);
}
});
}
});
3

Другие решения

Других решений пока нет …