在preventDefault Jquery ajax wordpress之后无法提交表单

时间:2016-11-01 06:07:12

标签: jquery ajax wordpress

我正在提交带有ajax的表单,并在提交时将值保存到数据库中。这是表格代码。

<form method="post" action="https://www.paypal.com/cgi-bin/webscr">

表单操作如下

<uses-permission android:name="android.permission.INTERNET"/>

但是在成功将值保存到数据库之后,表单没有提交并重定向到付出了代价。谢谢

3 个答案:

答案 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');
                                }
                            });
                        });
                    });