我正在提交带有ajax的表单,并在提交时将值保存到数据库中。这是表格代码。
<form method="post" action="https://www.paypal.com/cgi-bin/webscr">
表单操作如下
<uses-permission android:name="android.permission.INTERNET"/>
但是在成功将值保存到数据库之后,表单没有提交并重定向到付出了代价。谢谢
答案 0 :(得分:0)
在ajax成功后添加表单提交
if(success == 'success'){
form.submit();
}else{
alert('Failed to process form data');
}
或将事件更改为点击事件
$('#form').find('input[type="submit"]').on('click', function (e) {
e.preventDefault();
var form = $('#form');
var data = $('#form').serialize();
var goToPaypal = false;
if(goToPaypal == false){
e.preventDefault()
}else{
form.submit();
}
$.post( '<?php echo admin_url('admin-ajax.php'); ?>', {action:'enroll_data', data: data}, function(success){
alert(success);
if(success == 'success'){
goToPaypal = true;
form.submit();
}else{
alert('Failed to process form data');
}
});
});
答案 1 :(得分:0)
找到解决方案,删除 preventDefault()形成顶部的技巧。表单现在将值保存在数据库中以及重定向到paypal。我在ajax请求的失败按摩中添加了preventDefault(),以便在查询中存在错误时不会提交表单。谢谢你的帮助。
答案 2 :(得分:0)
您的问题与代码结构有关。不要反复使用preventDefault。
结构如下。
jQuery(document).ready(function ($) {
$('#form').on('submit', function (e) {
// e.preventDefault(); remove this extra code
var form = $(this);
var data = $('#form').serialize();
var goToPaypal = false;
if(goToPaypal == false){
e.preventDefault(); //semi-colon missing, use prevent default here to stop execution on error
}else{
form.submit();
}
$.post( '<?php echo admin_url('admin-ajax.php'); ?>', {action:'enroll_data', data: data}, function(success){
alert(success);
if(success == 'success'){
goToPaypal = true;
}else{
alert('Failed to process form data');
}
});
});
});