我在Laravel 5.3上遇到麻烦,特别是从我的JavaScript发布AJAX请求数据,我能够创建一个对象但是当我点击保存方法时我得到500(内部服务器错误)。
这是我的路线:
Route::post('create_comment', 'CommentsController@ajax_store');
这是我的控制者:
public function ajax_store(Request $request)
{
$comment = new Comment();
$comment->body = $request->body;
$comment->post_id = $request->post_id;
$comment->user_id = auth()->id();
$comment->save();
return response()->json(['data' => $comment]);
}
这是我的ajax请求:
$('.comment-submit-button').on('click', function(e) {
e.preventDefault();
var body = $(this).closest('form').find('textarea').val();
var post_id = $(this).data();
$.ajax({
method: 'POST',
url: urlCreateComment,
data: {
body: body,
post_id: post_id
}
}).done(function(data) {
console.log(data['data']);
});
编辑: 我的导入是在我的索引页面
@push('scripts')
<script>
var urlCreateComment = '{{ url('create_comment') }}';
</script>
<script src="{{ asset('/js/realtime.js') }}"></script>
<script>
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
</script>
@endpush
我的表格:
<form action="{{ url('create_comment') }}" method="post">
<div class="form-group">
<textarea placeholder="Write a comment ..." class="form-control" name="body" cols="30" rows="1"></textarea>
</div>
<!-- /.form-group -->
{{ csrf_field() }}
<div class="form-group adjust">
<button data-id="{{ $post->id }}" type="submit" class="comment-submit-button">
<i class="fa fa-caret-right"></i>
</button>
</div>
</form>
编辑:
我收到此错误:
数组到字符串转换(SQL:插入comments
...
编辑:...我解决了,问题是我必须在请求上实现get方法......
$request->get('body');
但是现在我有一个新问题,当我想上传图像时,我通过ajax与Laravel 5.3使用hasFile()方法,它返回null ...为什么?
以前有人有过这样的经历吗?任何见解和建议都会受到赞赏。提前谢谢!
答案 0 :(得分:1)
在JS
更改以下内容:
var post_id = $(this).data(); // $request->get('post_id') will produce an array
对此:
var post_id = $(this).data('id');