【问题标题】:displaying api data in laravel blade view [laravel 8] not showing data在 laravel 刀片视图 [laravel 8] 中显示 api 数据不显示数据
【发布时间】:2023-01-08 18:20:21
【问题描述】:

我正在从 imdb api 获取数据,当我尝试在刀片视图中显示数据时,我遇到了很多错误。

可能是因为我不确定我从 api 得到的响应是什么。

请告诉我,并提前感谢您抽出宝贵时间阅读我的问题。

所以这里有一些来自 api 的可用示例响应:

{
  "d": [
    {
      "i": {
        "height": 1500,
        "imageUrl": "https://m.media-amazon.com/images/M/MV5BYTRiNDQwYzAtMzVlZS00NTI5LWJjYjUtMzkwNTUzMWMxZTllXkEyXkFqcGdeQXVyNDIzMzcwNjc@._V1_.jpg",
        "width": 1102
      },
      "id": "tt0944947",
      "l": "Game of Thrones",
      "q": "TV series",
      "rank": 36,
      "s": "Emilia Clarke, Peter Dinklage",
      "v": [
        {
          "i": {
            "height": 720,
            "imageUrl": "https://m.media-amazon.com/images/M/MV5BZTg4YzdjNTctNDg5Mi00ZmU1LTkzOWEtNmMyNDBjZjNhNTJiXkEyXkFqcGdeQXRyYW5zY29kZS13b3JrZmxvdw@@._V1_.jpg",
            "width": 1280
          },
          "id": "vi59490329",
          "l": "Official Series Trailer",
          "s": "3:19"
        },
        {
          "i": {
            "height": 1080,
            "imageUrl": "https://m.media-amazon.com/images/M/MV5BMTljMTZmNDUtNTEzNy00NDgyLTk2N2QtOTI3MGQyNWE0MTI5XkEyXkFqcGdeQWplZmZscA@@._V1_.jpg",
            "width": 1920
          },
          "id": "vi1097842713",
          "l": "The 8 Most Surprising Moments From \"Game of Thrones\" to Rewatch",
          "s": "3:39"
        },
        {
          "i": {
            "height": 720,
            "imageUrl": "https://m.media-amazon.com/images/M/MV5BMTg0ODM4NTc3OV5BMl5BanBnXkFtZTgwODAwODE1OTE@._V1_.jpg",
            "width": 1280
          },
  ],
  "q": "game of thr",
  "v": 1
}

我尝试使用几种方法在我的刀片视图中显示数据,我正在尝试的最新方法是 blade.php:

@foreach ($data as $item)
    {{$item['d']}}
@endforeach

我得到这个作为回应:

{“数据”:{“d”:[{“i”:{“高度”:4096,“imageUrl”:“https://m.media-amazon.com/images/M/MV5BMTg4NDA1OTA5NF5BMl5BanBnXkFtZTgwMDQ2MDM5ODE@。V1.jpg","width":2764},"id":"tt2582782","l":"Hell or High Water","q":"feature","qid":"movie","rank": 1332,"s":"Chris Pine, Ben Foster","y":2016},{"i":{"height":755,"imageUrl":"https://m.media-amazon.com/图片/M/MV5BMjM5ODQ5Nzc3OF5BMl5BanBnXkFtZTgwOTQzMzM4NjE@。V1.jpg","宽度":509}

我的控制器中的功能是这样的:

    public function api(Request $request)
    {
        $userInput = $request->input();

        $response = Http::withHeaders(
            [
                "x-rapidapi-host"=> "xxxxxxxxx",
                "x-rapidapi-key"=> "xxxxxxxxxxx",
            ]
        )->get("https://imdb8.p.rapidapi.com/auto-complete?q=",$userInput)->json();

        return json_encode(array('data'=>$response));


    }

我也累了:

return view('view',['data'=>$response]);

但有不同的错误,如:

非法偏移类型。

并尝试了其他方法,但也没有成功。

我错过了什么??请帮忙。

【问题讨论】:

  • 可能是 $userInput 为空,因为当您不向其传递任何参数时,$request->input() 返回空数组。
  • 你完全正确,先生,但现在当我得到数据时,不仅仅是一个空的响应,我无法在我的刀片视图中显示它,它只显示如下:{"data":{"d":[{"i":{"height":4096,"imageUrl":"https:\/\/m.media-amazon.com\/images\/M\/MV5BMTg4NDA1OTA5NF5BMl5BanBnXkFtZTgwMDQ2MDM5ODE@._V1_.jpg","width":2764},"id":"tt2582782","l":"Hell or High Water","q":"feature","qid":"movie","rank":1332,"s":"Chris Pine, Ben Foster","y":2016},{"i":{"height":755,"imageUrl":"https:\/\/m.media-amazon.com\/images\/M\/MV5BMjM5ODQ5Nzc3OF5BMl5BanBnXkFtZTgwOTQzMzM4NjE@._V1_.jpg","width":509}
  • @JSTECH 能否请您演示在我的刀片视图中正确显示数据的正确方法?例如我想显示图像和排名
  • 您的响应数据结构不正确,请解决此问题。我想弄清楚你的问题。 (请编辑问题)
  • @JSTECH 在问题中我提供了 api 示例响应,而这些响应又由 imdb.api 提供。我将添加我在上方评论中显示的回复。

标签: php laravel laravel-8


【解决方案1】:

尝试这个。
公共函数 api(请求 $request) { $userInput = $request->input();

    $response = Http::withHeaders(
        [
            "x-rapidapi-host"=> "xxxxxxxxx",
            "x-rapidapi-key"=> "xxxxxxxxxxx",
        ]
    )->get("https://imdb8.p.rapidapi.com/auto-complete?q=",$userInput);

    return response->json(array('data'=>$response->body()));
}

【讨论】:

  • 谢谢亲爱的先生,我已经尝试了您的建议,但出现了这个错误:Call to a member function body() on null 。接下来我该做什么?
  • 你能把 $response 变量的实际响应发给我吗?
  • 当然,亲爱的先生。这是我得到的回复 {"data":{"d":[{"i":{"height":4096,"imageUrl":"https://m.media-amazon.com/images/M/MV5BMTg4NDA1OTA5NF5BMl5BanBnXkFtZTgwMDQ2MDM5ODE@._V1_.jpg","width":2764},"id":"tt2582782","l":"Hell or High Water","q":"feature","qid":"movie","rank":1332,"s":"Chris Pine, Ben Foster","y":2016},{"i":{"height":755,"imageUrl":"https://m.media-amazon.com/images/M/MV5BMjM5ODQ5Nzc3OF5BMl5BanBnXkFtZTgwOTQzMzM4NjE@._V1_.jpg","width":509}
  • 让我清除您的发送数据直接控制器查看?我对吗?
  • 您可以查看此 link(Laravel 文档。)
【解决方案2】:

如果这是来自 api 的响应,,,,

{“数据”:{“d”:[{“i”:{“高度”:4096,“imageUrl”:“https://m.media-amazon.com/images/M/MV5BMTg4NDA1OTA5NF5BMl5BanBnXkFtZTgwMDQ2MDM5ODE@.V1.jpg ","width":2764},"id":"tt2582782","l":"地狱 或 High Water","q":"feature","qid":"movie","rank":1332,"s":"Chris 松,本 Foster","y":2016},{"i":{"height":755,"imageUrl":"https://m.media-amazon.com/images/M/MV5BMjM5ODQ5Nzc3OF5BMl5BanBnXkFtZTgwOTQzMzM4NjE@.V1.jpg" “宽度”:509}

然后不需要 json_encode 哥们。

$data = $response
return view('view_path',compact('data'));

【讨论】:

  • 谢谢亲爱的先生,我正在尝试你的建议,但现在我收到这个错误“compact(): Undefined variable: data”
  • $data = json_encode($response);
  • 现在我收到一个新错误,先生,Invalid argument supplied for foreach()
  • $response 转储响应变量并发送输出 plz。现在问题出在 api 响应中,为什么要执行 json_encode???
  • 亲爱的先生,我正在尝试您的解决方案,现在我收到了这个错误:Undefined index:d
【解决方案3】:

这只是一个演示代码,但您应该这样做。

这不是您的解决方案的一部分(忽略它),但我想展示我是如何测试它的。我已将您的回复数据放入我的test.json 文件中。

$response = file_get_contents(public_path('json/test.json'));

$object = json_decode($response);

$array = collect($object)->toArray(); // Not needed if you get an array type in $object

解决方案

foreach ($array as $data) {
    $data = collect($data)->toArray(); // Not needed if you get an array type in $data
    foreach ($data as $items) {
        $items = collect($items)->toArray(); // Not needed if you get an array type in $items
        foreach ($items as $value) {
            $value = collect($value)->toArray(); // Not needed if you get an array type in $value

            $image = collect($value["i"])->toArray(); // Not needed if you get an array type in $value["i"]

            $imageUrl = $image["imageUrl"];
            $rank = $value["rank"];
        }
    }
}

【讨论】:

  • 亲爱的先生,谢谢您的努力和耐心,但我仍然遇到错误。只是不确定问题出在哪里。
  • 你有没有在$data 中获取数据?
  • 我确实使用了您提供的示例代码。
【解决方案4】:

我的问题的更新!

所以我通过使用 for 循环而不是 foreach 循环解决了我遇到的问题!

那对我有用!

谢谢大家花时间帮忙^_^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-09
    • 2020-10-10
    • 2020-07-26
    • 2020-05-08
    • 2022-01-11
    • 2016-11-20
    • 2020-06-09
    • 1970-01-01
    相关资源
    最近更新 更多