500内部服务器错误Ajax Laravel

时间:2015-12-17 17:05:03

标签: php jquery ajax laravel laravel-5

我正在尝试发布

http://localhost:8888/test

JS

$('.saveBTN').click(function (event) {

    $( "form#editForm" ).on( "submit", function( event ) {
      event.preventDefault();

      var inputs = {};
      $("#editForm :input").each(function() {
        inputs[$(this).attr("name")] = $(this).val();
      });

      var $inputs = JSON.stringify(inputs);

      $.ajax({
          headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
          url: '/test',
          type: 'POST',
          dataType: 'json',
          data: $inputs,
          success: function (data, textStatus, xhr) {

              console.log(data);
          },
          error: function (xhr, textStatus, errorThrown) {

              console.log('PUT error.');
          }
      });

});

我一直在

  

500内部服务器错误

我已尝试添加

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

这是我的Ajax

headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},

对此的任何提示都将非常感激!

2 个答案:

答案 0 :(得分:7)

在表格下方添加此内容。

// This will generate token field which will be token
{{ csrf_field() }}  


// Expected Output
<input type="hidden" name="_token" value="ssdfdsfsdfsdfs32r23442">

VerifyCsrfToken.php - 文件为middleware,包含在Web中间件组中,将自动验证请求输入中的token是否与会话中存储的令牌匹配。< / p>

请参阅此URL以获取更多信息: http://laravel.com/docs/master/routing#csrf-x-csrf-token

  

更新 - 2016年12月23日

从laravel开始,您也可以使用以下内容。

<form action="/foo/bar" method="POST">
    <input type="hidden" name="_method" value="POST">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

API参考:https://laravel.com/docs/master/routing#form-method-spoofing

答案 1 :(得分:0)

与评论中提到的 @Paulpro @Mark Davidson 一样,meta标记应该具有content属性,而不是值:

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

而不是:

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

希望这有帮助。