Ajax调用与Laravel 5返回错误500(内部服务器错误),甚至当CSRF令牌传递

问题描述:

标题说的这一切。Ajax调用与Laravel 5返回错误500(内部服务器错误),甚至当CSRF令牌传递

.blade.php文件:

@foreach($posts as $post) 

      <article class="post" data-postid=" {{ $post->id }} "> 
       <p>{{ $post->body }}</p> 
       <div class="info"> 
        Posted by {{$post->user->first_name}} on {{ $post->created_at }} 
       </div> 
       <div class="interaction"> 
        <a href="#" class="like">Like</a> | 
        <a href="#" class="like">Dislike</a> 
        @if(Auth::user() == $post->user) 
         | 
         <a href="#" class="edit">Edit</a> | 
         <a href="{{ route('post.delete', ['post_id' => $post->id]) }}">Delete</a> 
        @endif 
       </div> 
      </article> 

     @endforeach 

.blade.php文件中的JS:

<script> 
     var token = '{{ csrf_token() }}'; 
     var urlEdit = '{{ route('edit') }}'; 
     var urlLike = '{{ route('like') }}'; 
    </script> 

.js文件:

$('.like').on('click', function(event){ 
    event.preventDefault(); 
    postId = event.target.parentNode.parentNode.dataset['postid']; 
    var isLike = event.target.previousElementSibling == null; //Checks if it's a like or dislike. 

    $.ajax({ 
     method: 'POST', 
     url: urlLike, 
     data: {isLike: isLike, postId: postId, _token: token} 
    }) 
    .done(function(){ 

    }); 
}); 
  • 我试着检查一下,如果我在路由上做错了什么。
  • 我试图传送令牌的元标签中,而不是将其定义为一个javascript变量
  • 的我尝试使用双手镯“,而不是单个的人”。

似乎没有任何工作,这是怎么回事这里?

+1

你有PHP错误报告吗?如果没有,添加它,看看错误返回,ITLL告诉你很多超过我们所能猜到的。让我们知道这是什么说的,我们可以帮助更多 – DelightedD0D

+0

嗯,我从我所知道的错误报告,所以它不应该与PHP的任何东西。 无论如何,我通过排除在“应用\ HTTP \中间件\ VerifyCsrfToken” CSRF验证“解决”它简单地通过增加内 路径'保护$除了= [ “/路径” ];' –

+0

*错误500(内部服务器错误)*非常特别意味着服务器出现错误,并且该错误几乎肯定会在PHP中引发。无论如何,快乐你得到了它:) – DelightedD0D

首先,你必须像这样CSRF加元。

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

<script> 
    $('.like').bind('click', function(event) { 
    event.preventDefault(); 
    postId = event.target.parentNode.parentNode.dataset['postid']; 
    var isLike = event.target.previousElementSibling == null; 
    $.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
     } 
    }); 

    $.ajax({ 
    url: url, 
    type: "POST", 
    data: {isLike: isLike, postId: postId, _token: token}, 
    dataType: "json", 
    beforeSend: function(){ 
      $('#loading').show(); 
     },   
     success: function(resp) { 
     console.log(resp); 
     } 
    }); 
    }); 

</script> 
+0

请检查这一点,让我知道 –