在 laravel 5.2 中使用 jquery 和 ajax 出现 500 内部服务器错误
Posted
技术标签:
【中文标题】在 laravel 5.2 中使用 jquery 和 ajax 出现 500 内部服务器错误【英文标题】:500 internal server error using jquery and ajax in laravel 5.2 【发布时间】:2016-11-26 04:59:24 【问题描述】:我正在 laravel 5.2 中使用 jquery 和 ajax 构建编辑帖子系统。当我在我的引导模式中单击保存更改按钮时,会显示以下错误:
错误:POST http://localhost:8000/edit 500(内部服务器错误)
发送@jquery-1.12.0.min.js:4
ajax@jquery-1.12.0.min.js:4(匿名函数)@myplace.js:24
调度@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>
【问题讨论】:
Internal Server Error
是您的服务器告诉您应该阅读它的日志文件的方式。这是您唯一可以找到有用的调试信息的地方。
@Oldskool 我的日志文件:laravel.io/bin/E31Qy
看起来您的 CSRF 令牌无效。另见***.com/questions/32738763/…
@Oldskool ya ty ,但我已经实现了该方法但同样的错误。
【参考方案1】:
您的 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() ' );
【讨论】:
以上是关于在 laravel 5.2 中使用 jquery 和 ajax 出现 500 内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 5.2 中通过 RESTful 资源控制器使用 jQuery Ajax Post 方法将数据存储在数据库中
Laravel 5.2 无法将跨域 jQuery 方法识别为 AJAX