e.preventDefault()不起作用。 AJAX / Laravel 5.4

时间:2017-09-21 10:25:19

标签: php jquery json ajax laravel-5.4

我有一个Ajax调用,它发送用户表单输入以在后端处理。后端的控制器将结果发送回JSON,当表单被提交时,页面重新加载并重定向到一个空白页面,原始JSON而不是AJAX拾取的json。

这是Ajax调用:

Array.prototype.forEach

这是Laravel控制器,如果验证失败则发送Json,如果用户通过身份验证,则会重定向用户,否则返回401,要求用户登录。

<script type="text/javascript">
    $(document).ready(function(){
        $('form').on('submit', '#topup-form', function(e){
        e.preventDefault();
            $.ajax({
                url: $('form').attr('action'),
                method: 'post',
                data: $('form').serialize(),

                success: function(result){
                    alert(result);
                },

                error: function(errorData){
                    alert(errorData);
                }
            });
        });
        $.ajaxSetup({
            headers: {
                'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
            }
        })
    });
</script>

发生的事情是没有任何内容弹出作为警报,但用户被重定向到具有原始JSON的页面。

1 个答案:

答案 0 :(得分:0)

我遇到过类似的问题 我通过将提交按钮类型更改为“按钮”来解决它,以便表单不会自动提交。我的ajax代码如下:

$(document).ready(function() {
           $("#submit").click(function() {   
            var loginForm = $("#contactForm");
            var formData = loginForm.serialize();

              /*alert(formData);*/

                 $.ajax({
                     url: /*you URL*/,
                     type:'post',
                     data:formData,
                     success:function(data){
                         //alert(data);     //for redirecting instead of alert try below code

                         if(data == "") {       //True Case i.e. passed validation
                          alert('error')
                         }
                         else {                 //False Case: With error msg
                         alert(data);   //$msg is the id of empty msg
                         }

                     },
                     error: function (data) {
                         /*console.log(data);*/
                         alert(data);
                     }
                 });

           });

         /*alert('Successfully Loaded');*/

         });

你的php响应句柄似乎也没问题。希望这有帮助