Laravel:无法遍历 json 中的对象数组

Laravel: can't iterate through array of objects from json

当用户点击图标时,ajax 调用控制器并调用控制器 returns 一些注释。

我的控制器

public function read($id)
{
    $comments = Comment::where('post_id', $id)->get();

    return response()->json([
        'html' => view('includes.comments')->render(),
        'comments' => $comments
    ]);
}

Ajax 成功函数

var comments_box = comments_container.find('.comments-box');
comments_box.html(data.html);
console.log(data);

在控制台日志中,有一组带有注释和呈现 html 视图的对象。但我无法遍历该数组。如果我在 comments.blade.php 中放入一些垃圾代码,它就会显示出来。但如果我尝试 @foreach($comments as $comment) some code @endforeach 根本不行,报错信息是Undefined variable: comments

您需要将变量传递给视图(如果您想在 blade 文件中使用该变量)

例如说

return view('includes.comments', ['comments' => $comments]);

这样 $comments 变量将在 blade 文件中可用,然后您可以使用 @foreach

更多浏览量documentation

我相信而不是:

return response()->json([
    'html' => view('includes.comments')->render(),
    'comments' => $comments
]);

你应该使用:

return response()->json([
    'html' => view('includes.comments', ['comments' => $comments])->render(),
    'comments' => $comments // this line might be not necessary
]);

这是因为您要渲染 blade 并且需要将 $comments 传递到视图中。所以取决于你真正想要的 return as json line:

'comments' => $comments // this line might be not necessary

如果您想将其用于查看,可能完全没有必要。