您好我创建了一个网站,其中有一个表单,其中的操作指向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">×</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 :(得分: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);
}
});
}
});