代码之家  ›  专栏  ›  技术社区  ›  Gammer

Laravel 5.5:419 AJAX状态未知

  •  2
  • Gammer  · 技术社区  · 7 年前

    我正在请求 POST :

    路线:

    Route::post('/register','CommonController@postRegister')->name('register');

    CSRF元标记:

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

    $("#submitSalonForm").click(function(e) {
      $.ajaxSetup({
          headers: {
              'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
          }
      });
      $.ajax({
          url: "/register",
          type: "post",
          data: new FormData($('form')[1]),
          cache: false,
          contentType: false,
          processData: false,
          success:function(response) {
              return alert('Form 2 submitted');
          }
      });
    });
    

    例外情况:

    Exception screenshot

    有时会出现异常,有时代码运行平稳,我不知道这里缺少了什么。

    4 回复  |  直到 7 年前
        1
  •  4
  •   Leo    7 年前

    将ajax方法从post更改为get

    <input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
    

    Ajx电话:

    let formData = $('form').serializeArray();
    $.ajax({
          url: "/register",
          type: "POST",
          data: {formData, "_token": $('#token').val()},
          cache: false,
          datatype: 'JSON',
          processData: false,
          success: function (response) {
               console.log(response);
             },
             error: function (response) {
               console.log(response);
             }
      });
    

    你的路线是get

    Route::get('/register','CommonController@showRegister')->name('register');
    

    Ajax调用正在发出post请求,laravel sqwaks有一个http异常。

    编辑: Laravel 419 post错误通常与api有关。php和令牌授权

    因此,尝试在ajax主体上包含令牌,而不是像上面那样。

        2
  •  2
  •   Sudaba Solaimankhil    4 年前

    除了将crsf标记值放入标头元标记中,您还需要在AJAX请求中传递它,如:

    $.ajaxSetup({
       headers: {
         'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
       }
    });
    
        3
  •  0
  •   smartrahat    7 年前

    无需单独设置ajax。Laravel会自动为应用程序管理的每个活动用户会话生成一个CSRF“令牌”。使用以下内容获取令牌:

    var token = "{{ csrf_token() }}";
    

    传入令牌 data

    var token = "{{ csrf_token() }}";
    var formData = new FormData($('form')[1])
    $.ajax({
        url : '/register',
        data : {_token:token,formData:formData},
        type: 'post',
        ...
    })
    
        4
  •  0
  •   Mohammad ALTAWEEL    7 年前

    嗯,我知道我来晚了,但我确实面临了你面临的问题。

    我百分之百确定令牌已随请求一起发送,但问题仍然存在。

    因此,经过多次搜索,我最终通过以下步骤修复了它:

    php artisan config:clear          
    php artisan view:clear
    php artisan route:clear
    php artisan cache:clear
    php artisan clear-compiled
    
    推荐文章