当前位置: 首页 > 知识库问答 >
问题:

Laravel ajax put请求返回500内部服务器错误

尉迟国发
2023-03-14

我的浏览器控制台上有一个错误:“放置http://localhost:8000/post/2 500(内部服务器错误)”

我使用资源控制器和我的路由-路由e::资源('post','PostController');

此处为更新帖子的资源控制器代码:

public function update(Request $request, $id)
{
        $post = Post::findOrFail($id);
        $post->name = $request->name;
        $post->content = $request->content;
        $post->save();
        return response()->json($post);
}

这里我的视图代码:

<form class="form-horizontal" role="form">
    <div class="form-group">
        <input type="text" class="none" id="id">
        <label class="control-label col-sm-2">Name:</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="name">
        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-sm-2">content:</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="content">
        </div>
    </div>
    <div class="form-group">
        <input type="submit" value="Edit" onclick="mainCatEdit();">
    </div>
</form>

Ajax代码

function mainCatEdit() {
    $.ajax({
        url: '/maincategory/'+id,
        type: 'PUT',
        data: {
            '_token': $('input[name=_token]').val(),
            'id': $('#id').val(),
            'name': $('#name').val(),
            'content': $('#content').val()
        },
        success:function(data) {
            console.log(data);
        }
    });
}

顺便说一下,我在文件头上使用了元令牌{{csrf_token()}}。但是我在本地主机上发现了500个内部服务器错误。所以有人帮帮我。

共有2个答案

薛烈
2023-03-14

您正在尝试获取未设置的令牌的值,让我们在不进行测试的情况下再次查看您的代码,只需在页面顶部的meta标记下尝试此设置

<meta name="csrf-token" content="{{ csrf_token() }}">

那么您的ajax应该是

function mainCatEdit() {
$.ajaxSetup({
headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
$.ajax({
    url: '/maincategory/'+id,
    type: 'PUT',
    data: {
        'id': $('#id').val(),
        'name': $('#name').val(),
        'content': $('#content').val()
    },
    success:function(data) {
        console.log(data);
    }
});

}

我希望这有帮助

孟高峰
2023-03-14

您忘记将数据填入模型,请执行以下操作:

public function update(Request $request, $id)
{
        $post = Post::findOrFail($id);
        $post->fill([
            $post->name = $request->name;
            $post->content = $request->content;
        ]);
        $post->save();
        return response()->json($post);
}
 类似资料:
  • 我使用RESTAssured练习web服务。在post请求中,它返回500服务器错误,其中我使用邮差发送请求,没有错误。谁能帮我调试一下这个错误吗?请给点意见。任何帮助都是感激的?提前道谢。 错误消息的状态代码应为<200>,但为<500>。 堆栈跟踪:

  • 这是我在laravel 5中的测试ajax(参考下面) 以及触发链接 我的路线呢 但它给我一个错误,当我在谷歌chrome运行控制台,它不返回预期的响应返回成功!Ajax在laravel 5';" 邮递http://juliver.laravel.com/test500(内部服务器错误) 我的代码有什么问题?我遗漏了什么?

  • 在尝试使用Twython进行简单的推特搜索时 我得到了这个错误: 这里可能有什么问题?

  • 我使用REST客户端的PUT请求有问题。我在邮递员中尝试了同样的方法,我得到了一个带有适当错误消息的错误响应。所以我期望在C#-RestSharp请求调用中也是如此。相反,我得到一个500内部服务器错误,与请求。错误异常=null和请求。错误消息=null以及。在有人指责我请求头之前,我确实设置了请求。addHeader(接受,应用/json); 我的代码是这样的 所以现在的反应。我看到的内容是下

  • 我已经被这个问题困扰了好几个小时,检查了几十个示例/StackOverflow答案,但我仍然得到同样的错误。这是我第一次使用AJAX,但我对Laravel有丰富的经验。 我遇到的问题是,在尝试发送AJAX请求时出现500个内部服务器错误,其目的是更新数据库中的一行。 我已经读到这个错误可能是由CSRF令牌没有被验证/传递到后端引起的,但是尽管改变了我的代码,我仍然得到同样的问题。 这是我的代码:

  • 我在做一个春靴项目, 我正试图从邮递员发送get请求,但我得到500个内部服务器错误。 控制器: } 型号: