在laravel中使用jquery和ajax的500内部服务器错误5.2
我在laravel 5.2中使用jquery和ajax的编译后系统。当我在我的引导模式点击保存更改按钮,会显示以下错误:在laravel中使用jquery和ajax的500内部服务器错误5.2
Error: POST http://localhost:8000/edit 500 (Internal Server Error)
send @ jquery-1.12.0.min.js:4
ajax @ jquery-1.12.0.min.js:4 (anonymous function) @ 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标签
<meta name="_token" content="{{ csrf_token() }}">
然后调整AJAX设置
$(function() {
$.ajaxSetup({
headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') }
});
});
或者也可以简单
$.ajaxSetup({ headers: { 'csrftoken' : '{{ csrf_token() }}' } });
非常感谢,它工作! –
救了我很大的时间!谢谢老兄!!!!! –
'内部服务器Error'是告诉你,你应该你的服务器的方式读它的日志文件。这是唯一可以找到有用的调试信息的地方。 – Oldskool
@Oldskool我的日志文件:http://laravel.io/bin/E31Qy –
看起来您的CSRF令牌无效。另请参阅http://*.com/questions/32738763/laravel-csrf-token-mismatch-for-ajax-post-request – Oldskool