如何将数据从控制器传递到 laravel 中查看?

Posted

技术标签:

【中文标题】如何将数据从控制器传递到 laravel 中查看?【英文标题】:How to pass data from controller to view in 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> How to pass data to view in Laravel?的可能重复 【参考方案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)
   ]);

【讨论】:

以上是关于如何将数据从控制器传递到 laravel 中查看?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 post 方法将数据从 ajax 传递到 laravel 5.2 控制器

laravel如何将数据从表单传递到控制器

Laravel 5.2 - 如何将变量(数组和整数)从视图传递到控制器?

如何将数据从控制器传递到 Laravel 中的视图

如何将数组数据从 vuejs 传递到 laravel api 控制器

Laravel - 如何将参数从控制器传递到路由并在另一个控制器中使用它?