【问题标题】:How to pass data from controller to view in laravel?如何将数据从控制器传递到 laravel 中查看?
【发布时间】:2019-07-18 20:26:50
【问题描述】:

我需要从控制器传递数据才能查看代码:

控制器:

function requete()
{
    $id = Str::random();  
    return view('Demo.requete', compact('id'));
}

查看:

$(document).ready(function() {   
    $.ajax({
        url: "{{ route('support.requete') }}",
        method: "get",
        data: data,
        dataType: "json",
        success: function(data)
        {
            $('#code').html(data.id);//nothing happens here
        }
    });
});

我不断收到此错误:

【问题讨论】:

  • 您想要查看结果还是随机字符串?因为答案取决于你想要的结果。
  • 结果必须在视图内而不是视图内。
  • 那么你应该选择 Mihir Bhende 的答案,因为他的答案就是你要找的。​​span>

标签: php jquery ajax laravel laravel-5


【解决方案1】:

你可以这样做:

return view('Demo.requete', compact('id'));

那么就可以直接在blade文件中使用{{ $id }}了。

更新:

您正在使用 ajax,因此您需要一个 json 响应:

return response()->json(compact('id'), 200);

那么你就可以在ajax成功了:

$('#code').html(data.id);

【讨论】:

  • Uodated muy answer
  • 您实际上不需要传递“data”和“dataType”,因为您对服务器端没有做任何事情。如果您尝试访问 data.id,则需要从服务器返回 JSON 响应而不是视图。请参阅下面关于如何做到这一点的答案。
【解决方案2】:

您不应该使用 Ajax 请求返回视图,这应该是使用 $.ajax 获取请求的不同路径。然后 Laravel 可以返回 JSON 响应,您可以在成功回调中使用它。

return response()->json([‘id’ => $id]);

【讨论】:

    【解决方案3】:

    您不应在视图中使用 echo。 您不应该使用 ajax 来获取视图(除非您想接收 HTML 并且这里似乎不是这种情况) 如果您想异步获取数据,您应该为您的 ajax 请求设置一个不同的端点,否则您可以返回包含您需要的所有数据的视图。

    【讨论】:

      【解决方案4】:

      如果是ajax,尝试返回响应json

      function requete()
      {
          $id = Str::random();
          return response()->json([
           "id" => json_encode($id)
         ]);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-27
        • 2021-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多