Laravel 5.5:阿贾克斯不工作

问题描述:

我发生了一个奇怪的问题&我无法弄清楚。Laravel 5.5:阿贾克斯不工作

Ajax表格提交不起作用Laravel 5.5虽然它在Laravel 5.2的作品。我的意思是相同的代码适用于Laravel 5.2,但不适用于Laravel 5.5。我附上我的代码,以便您能理解。

Html:

<form action="{{ url('/register') }}" method="POST" id="userRegistrationForm"> 
    ........... 
    ........... 
    <button type="submit">Register</button> 
    {{ csrf_field() }} 
</form> 

JS:

$('#userRegistrationForm').validate({ 
    rules:{ 
     ...... 
    }, 
    messages:{ 
     ...... 
    }, 

    submitHandler: function(form){ 
     /* alert('Submit success!') */ /* It works, that means this function works properly */ 

     /* But this not works */ 
     $.ajax({ 
      url: form.action, 
      type: form.method, 
      data: $(form).serialize(), 

      success: function(response){ 
       location.reload(); 
      }, 

      error: function(response){ 
       alert('error spotted'); 
      } 
     }); 
    } 
}); 

当我从提交注册,jQuery验证工作。但是表单默认提交模式,而不是Ajax。错误不会通过Javascript警报显示。

您必须停止阻止写你这样的代码

$("#userRegistrationForm").submit(function(e) { 
     e.preventDefault(); 
    }).validate({ 
     messages:{..}, 
     rules: {...}, 

     submitHandler: function(form) { 

      $.ajaxSetup({ 
       headers: { 
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
       } 
      }); 
      $.ajax({ 
       url: form.action, 
       type: form.method, 
       data: $(form).serialize(), 

      success: function(response){ 
       location.reload(); 
      }, 

      error: function(response){ 
       alert('error spotted'); 
      } 
     }); 
      return false; //This doesn't prevent the form from submitting. 
     } 
    }); 

你设置你的meta标签CSRF令牌?

<meta name="csrf-token" content="{{ csrf_token() }}">

您所设定的令牌后,您需要设置标题为您的Ajax请求,所以你只需要你的Ajax请求之前,下面的代码添加。

$.ajaxSetup({ 
      headers: { 
       'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
      } 
     }); 
$.ajax({ 
     url: form.action, 
     type: form.method, 
     ... : ...,