500(内部服务器错误)在 Laravel 5 中使用 Ajax

Posted

技术标签:

【中文标题】500(内部服务器错误)在 Laravel 5 中使用 Ajax【英文标题】:500 (internal server error) using Ajax in Laravel 5 【发布时间】:2016-10-30 12:25:53 【问题描述】:

我创建了一个喜欢和不喜欢的按钮,并通过 Laravel 5.2 中的 ajax 存储信息。我使用 wamp 作为我的本地主机。 起初,我看到有时喜欢和不喜欢被计算在内,有时则没有。 于是,我尝试通过console.log()在控制台中查看,在我的一些点击中发现了500(internal Server Error) 我还确保正确提供了 csrf 令牌。

我不知道如何处理有时会出现有时不会出现的错误。

这是我的 likeajax.js

$.ajaxSetup(
    headers: 
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    
);
var postId=0;

    $('.option1').on('click', function (event) 

        event.preventDefault();
        $('event').attr('disabled', 'disabled');

        postId = event.target.parentNode.parentNode.parentNode.parentNode.dataset['postid'];

            $.ajax(
                method: 'GET',
                url: urlLike,
                data: postId: postId, _token: token,
            )



    );

    $('.optionx').on('click', function (event) 

        event.preventDefault();
        $('event').attr('disabled', 'disabled');

        postId = event.target.parentNode.parentNode.parentNode.parentNode.dataset['postid'];

        $.ajax(
            method: 'GET',
            url: urlDislike,
            data: postId: postId, _token: token,
        )

    );

这是我的 LikeController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Depress;
use App\Http\Requests;

class LikeController extends Controller

    public function postLike(Request $request)
    
        $post_id = $request['postId'];
        $post = Depress::find($post_id);
        $post->like = $post->like+1;
        $post->save();
        return null;
    

    public function postDislike(Request $request)
    
        $post_id = $request['postId'];
        $post = Depress::find($post_id);
        $post->dislike = $post->dislike+1;
        $post->save();
        return null;
    

这是我喜欢的layout.blade.php

<script>
    var token = " csrf_token() ";
    var urlLike = ' route('like') ';
    var urlDislike = ' route('dislike') ';
</script>

更新: 虽然当我转到页面时:http://localhost:8000/dislike,

它显示

RouteCollection.php 第 218 行中的 MethodNotAllowedHttpException:

任何帮助将不胜感激。

【问题讨论】:

你在 500 响应中得到了什么? 打开浏览器检查器的网络选项卡,选择 ajax 调用并查看它返回的响应。在此响应中,您将找到错误并可能找到解决方案。 jquery.min.js:4 GET localhost:8000/…500(内部服务器错误)发送@jquery.min.js:4ajax @jquery.min.js:4(匿名函数)@likeajax.js :33dispatch@jquery.min.js:3r.handle@jquery.min.js:3 那是你的控制台的回报。我们需要您的 ajax 调用的响应才能查看问题所在。你在用 Chrome 吗?按 F+12,单击网络,单击 ajax 调用,单击响应并用它更新您的问题。 另外,你确定它总是得到正确的帖子 ID 吗? 【参考方案1】:

问题是你$post_idNULL

尝试使用$request-&gt;input('postId') 而不是$request['postId']

您还应该考虑使用POST 而不是GET

【讨论】:

问题依旧 另外,如果 $post_id 为 NULL,有时这是如何工作的? 好的,将您的 javascript 中的 method: 'GET' 更改为 method: 'POST'。不要忘记将您的路线更改为 POST。 检查您的postId 是否真的被发送。您可以在 ajax 调用的“标题”选项卡中检查这一点。向下滚动,直到看到“表单数据”。你看到那里的postId 了吗?此外,如果您的数据库中存在具有 postIdDepress 模型? 当我转到页面时:localhost:8000/dislike,它在 RouteCollection.php 第 218 行显示 MethodNotAllowedHttpException 也许,这可以帮助

以上是关于500(内部服务器错误)在 Laravel 5 中使用 Ajax的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5:Ajax Post 500(内部服务器错误)错误

Laravel5.5 路由; 500内部服务器错误)

Laravel 5:Ajax Post 500(内部服务器错误)

500 内部错误:加载资源 Laravel 5.0 失败

Laravel 5.7 ajax 请求 500(内部服务器错误)

Laravel 5.2 ajax 返回 500 内部服务器错误