【问题标题】:How to return a view and also return a json response in Laravel?如何在 Laravel 中返​​回视图并返回 json 响应?
【发布时间】:2020-10-11 04:59:05
【问题描述】:

我正在尝试返回视图和 json 响应。

return view('website.ajaxcart.cart-list', compact('cartProducts'));
return response()->json([
    'status'=>"success",
    'message' => "Product added to Cart"
]);

尝试像这样连接这两个:

return view('website.ajaxcart.cart-list', compact('cartProducts'))->response()->json([
    'status'=>"success",
    'message' => "Product added to Cart"
]);

但它不起作用......甚至可能吗?

【问题讨论】:

  • 你不能。你想达到什么目的?如果您将产品添加到购物车并希望在视图中显示成功消息,最好使用redirect 并使用->with('message', 'Product added to Cart successfully'); 发送消息

标签: json laravel view response


【解决方案1】:

试试这个,

  return redirect('website.ajaxcart.cart-list', compact('cartProducts'))
  ->with('success', 'Profile updated!');

在刀片文件中

@if (session('success'))
    <div class="alert alert-success">
        {{ session('success') }}
    </div>
@endif

请查看 laravel 文档

【讨论】:

    【解决方案2】:

    JSON 是文本,使用 JavaScript Object N自述。 它有自己的格式。 因此,当您在 json 响应中推送任何内容时,就会破坏这种格式。

    您可以将数组作为json 响应传递。因此,根据您的数据制作一个数组并使用它,如下所示:

    $user= User::all()->toArray();
    $post= Post::all()->toArray();
    return Response::json(array('user' => $user, 'post' => $post));
    

    所以在您的代码中只需将其作为数组而不是 JSON 传递:

    $data = [
        'status'=>"success",
        'message' => "Image deleted"
    ];
    
    return view('website.ajaxcart.cart-list', compact('cartProducts', 'data');
    

    【讨论】:

      猜你喜欢
      • 2015-05-06
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 2016-12-07
      • 2021-12-26
      相关资源
      最近更新 更多