【问题标题】:Laravel ajax put request return 500 internal server errorLaravel ajax put 请求返回 500 内部服务器错误
【发布时间】:2019-06-05 17:12:24
【问题描述】:

我的浏览器控制台出现此错误:“PUT http://localhost:8000/post/2 500 (Internal Server Error)”

我使用资源控制器和我的路由——Route::resource('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() }}。 但我在 localhost 上收到 500 个内部服务器错误。所以有人帮助我。

【问题讨论】:

  • 检查您的错误日志。
  • id javascript 变量似乎也没有在任何地方定义
  • 查看代码我使用 id 字段。 @Akintunde-Rotimi

标签: php jquery ajax laravel laravel-5


【解决方案1】:

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

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);
}

【讨论】:

  • 现在我得到 Uncaught TypeError: Illegal invocation。但是在我的 chrome 浏览器网络部分我无法获得任何状态。
【解决方案2】:

您正在尝试获取您未设置的令牌的值,让我们再次查看您的代码而不进行测试,试试这个 将此设置在页面顶部的元标记下

<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);
    }
});

}

希望对你有帮助

【讨论】:

  • 感谢您的回答,我已经发现了我的问题,那就是 ID 问题。但现在我想用这个 ajax 请求上传图像文件,其中文件名和路径插入数据库并将该文件复制到公共文件夹。
  • 好的,你有什么错误吗?如果有,请发布您遇到的错误
猜你喜欢
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
  • 2019-02-19
  • 1970-01-01
  • 2018-05-07
  • 2016-06-19
  • 2015-07-21
相关资源
最近更新 更多