laravel ajax返回500(内部服务器错误)

时间:2019-12-12 10:34:59

标签: javascript php ajax laravel

这是我的脚本

<meta name="csrf-token" content="{{ csrf_token() }}">
<script>
        $(document).ready(function(){
            $('#add').click(function(e){
                e.preventDefault();
                $.ajaxSetup({
                    headers: {
                        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                    }
                });
                $.ajax({
                    url: '/comments',
                    method: 'post',
                    data: {
                        message: $('#message').val(),
                    },
                    success: function(result){
                        jQuery('.alert').show();
                        jQuery('.alert').html(result.success);
                    }});
                });
            });
    </script>

我的表格

<form>
        @csrf
        @honeypot
        <div class="form-group">
            <label for="message">Enter your Comment/Review here:</label>
            <textarea class="form-control @if($errors->has('message')) is-invalid @endif" name="message" rows="3" id="message"></textarea>
            <div class="invalid-feedback">
                Your Review/Comment is required.
            </div>
        </div>
        <button type="submit" class="btn btn-sm btn-outline-success text-uppercase" id="add">Submit</button>
    </form>

我的控制器

    public function store(Request $request)
{
    $this->validator($request->all());
    // If guest commenting is turned off, authorize this action.
    // if (config('comments.guest_commenting') == false) {
    //     $this->authorize('create-comment', Comment::class);
    // }

    // Define guest rules if user is not logged in.
    // if (!auth()->check()) {
    //     $guest_rules = [
    //         'guest_name' => 'required|string|max:255',
    //         'guest_email' => 'required|string|email|max:255',
    //     ];
    // }

    // // Merge guest rules, if any, with normal validation rules.
    // $this->validate($request, array_merge($guest_rules ?? [], [
    //     'commentable_type' => 'required|string',
    //     'commentable_id' => 'required|string|min:1',
    //     'message' => 'required|string'
    // ]));

    $model = $request->commentable_type::findOrFail($request->commentable_id);

    $commentClass = config('comments.model');
    $comment = new $commentClass;

    if (!auth()->check()) {
        $comment->guest_name = $request->guest_name;
        $comment->guest_email = $request->guest_email;
    } else {
        $comment->commenter()->associate(auth()->user());
    }

    $comment->commentable()->associate($model);
    $comment->comment = $request->message;
    $comment->approved = !config('comments.approval_required');
    $comment->save();

    // if($request->ajax()) {
    //     return response()->json(['success'=>'Operation succed']);
    // }
    return response()->json(['success'=>'Operation Succeed']);

    //return redirect()->to(url()->previous() . '#comment-' . $comment->id);
}

这所有代码都返回500 Internal Server Error,我不知道为什么!!!! 我尝试修复元代码,但结果仍然相同。还尝试修复论坛中找到的所有可能的解决方案以及其他方法,但是结果是相同的。谁能解释什么是问题以及如何解决

1 个答案:

答案 0 :(得分:0)

获取错误内容将帮助您调试问题。

您应该检查的第一件事是您的.env文件,搜索APP_DEBUG的值并将其设置为true。这将使Laravel直接将错误的内容显示给浏览器。

您还可以检查storage\logs文件夹中Laravel日志文件的内容。

最后,请务必检查浏览器检查器的“网络”选项卡,作为您的Ajax请求,它的状态/响应将显示在其中。