在laravel 5.2中使用jquery和ajax时出现500内部服务器错误

500 internal server error using jquery and ajax in laravel 5.2

本文关键字:内部 错误 服务器 ajax laravel jquery      更新时间:2023-09-26

我正在laravel 5.2中使用jquery和ajax构建编辑后系统。当我在引导模式中点击保存更改按钮时,会显示以下错误:

错误:POSThttp://localhost:8000/edit500(内部服务器错误)

send@jquery-1.12.0.min.js:4

ajax@jquery-1.12.0.min.js:4(匿名函数)@myplace.js:24

dispatch@jquery-1.12.0.min.js:3

r.handle@jquery-1.12.0.min.js:3

js代码:

$('#modal-save').on('click' , function() {
 $.ajax({
 method : 'POST' ,
 url : url ,
 data: { body: $('#post-body').val(), postid: '' , _token: token }})
.done(function(msg) {
console.log(msg['message']);
    });
  });

包含在视图文件中:

    <script>
    var token='{{ Session::token() }}';
    var url='{{  route('edit') }}' ;
  </script>

 <script   src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
 <script   src="https://code.jquery.com/jquery-migrate-1.2.1.min.js" ></script>
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
  <script src="src/js/myplace.js"></script>

您似乎对我们的csrf令牌有问题。在进行ajax调用之前,只需更改ajax设置,并将令牌放入通过ajax发送的每个标头中。这将修复您的错误。

首先添加一个元标签

<meta name="_token" content="{{ csrf_token() }}">

然后调整ajax设置

$(function () {
    $.ajaxSetup({
        headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') }
    });
});

或者更简单的

$.ajaxSetup({ headers: { 'csrftoken' : '{{ csrf_token() }}' } });