【问题标题】:How to pass variables from Controller to View without refreshing the Web Page in Laravel?如何将变量从控制器传递到视图而不刷新 Laravel 中的网页?
【发布时间】:2019-06-08 17:43:30
【问题描述】:

每当在 View 中调用 Controller 时,我希望 Controller 将一些变量返回给 View,而不是刷新 View。

已经知道: return view("webpage" , compact('variable1', 'variable2') );

我期望达到的目标: return compact('variable1', 'variable2');

这不会返回网页,而只会返回一些变量。


编辑: 从完全不同的角度思考,这个问题可能会改写成这样

有没有办法从控制器操作网页的REQUEST 变量?这样,我就可以在不刷新网页的情况下从 Controller 获取新变量。

【问题讨论】:

  • @JellyBean 您告诉我数据来自视图(表单,如示例)-> 控制器的解决方案。我想要相反的数据,来自 Controller -> View。我将编辑问题以清除某些内容。
  • GuzzlehttpVue.js 的混合可能会奏效。
  • @UkraineInTheMembrane 感谢您的回复,我会检查一下。
  • 根据您的设置方式,您可以向控制器发出 get 请求以获取新变量,我使用类似的自动完成功能,每次用户键入内容时我都可以获取新数据新的。
  • @Jelly Bean 很有趣,它可能对我有用。我将尝试实施它。非常感谢。

标签: laravel


【解决方案1】:

没有太多工作要做,这里有一个例子:

Ajax 调用:

$.ajax({
    url: '/your/route/',
    type: 'GET',
    data: {getVariable: formInputValue},
})
.done(function (data) {
    console.log(data);
})
.fail(function () {
    console.log('Failed');
});

控制器功能:

public function getVariable(Request $request){
    $resault = $request->getVariable;
    return response()->json($results);
}

更新:根据这个答案的 cmets 试试这个,看看它是否适合你。

在您获取记录的控制器中,而不是使用->get(); 将其更改为 paginate(5); 这将每页返回 5 条记录。在</table> 底部的视图中添加{{ $variable->links() }}

【讨论】:

  • 虽然我不熟悉 Ajax(第一次发现它的用途)但这绝对是我的目标。非常感谢您抽出这么多时间来不断更新我这个问题。我实际上正在尝试使用“页码”制作网页,所以我想是否有办法在不刷新网页的情况下更改页面(并从控制器获取数据)。这就是我问这个问题的原因。这个答案足以指导我。谢谢。
  • 您能否发布您正在处理的页面的图像或链接,以便我可以看到您的页码用于什么。想我可能有更好的解决方案给你
  • 网页显示 5 个条目。我打算在网页末尾添加“页码:1,2,3,4...last”。用户单击哪个页码,该页码将被发送到控制器,该控制器将相应地返回该页码的 5 个条目。如果我使用你提到的 Ajax,我不需要刷新网页。此外,目前网页过于基础,我还将添加更多功能,如果我为每个“页码”不断刷新网页,这将减慢进程。 (P.S:现在忙于考试,所以现在不在网站上工作。)
  • 为您更新答案,试试看,确保省时省力
猜你喜欢
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 2011-09-14
相关资源
最近更新 更多