【发布时间】:2016-01-31 04:03:15
【问题描述】:
编辑:这可以通过使用 jQuery 在客户端的 Laravel cookie 中添加一个变量来完成吗?我了解 Cookie 在 GET 期间附加到请求中?
是否可以在执行GET 路由请求之前使用 jQuery 向 Laravel 5.2 中的$request 容器添加变量?
基本上,我正在尝试将值传递给GET 请求,并将其作为参数保留在 URL 之外(并且对用户隐藏)。
我的 HTML 本质上是一个菜单:
<ul class="sidebar-nav nav-pills nav-stacked " id="menu">
<li id="menu-1">
<a href="app.url/1">Menu 1</a>
</li>
<li id="menu-2">
<a href="app.url/2">Menu 2</a>
</li>
<li>.....</li>
</ul>
当a链接被点击时,我想截取这个并添加
menuState = 'state';
到$request 容器,然后允许点击事件路由到href 目的地。
现在在 Laravel 端,我应该能够访问它的值:
$request->input('menuState');
这是否可能在本质上是GET 请求,因此没有发布表单?
这是添加 URL 变量的示例
<a onclick="addURL(this)" href="app.url/1">Menu 1</a>
function addURL(element)
{
$(element).attr('href', function() {
return this.href + '&menuState=10';
});
}
这个可以吗?
<a onclick="addURL(this)" href="app.url/1">Menu 1</a>
function addURL(element)
{
---> ADD menuState = value to $request container, then continue with GET request
}
【问题讨论】:
-
如果您不想显示查询字符串,请使用 POST 方法。通过 JS 添加字段值:document.myformname.fieldname = fieldvalue 如果您想使用 javascript 提交,请执行 document.myformname.submit()。
-
嗨@JoeS,明白。但是我试图通过 GET 来做到这一点,因为我本身并没有发布表单,而是使用 GET 请求激活链接重定向。我试图避免手动将请求转换为 POST,因为它会混淆应用程序路由。这是应用程序的主菜单。
-
所以这是以 rest 样式和 HTTP GET 动词完成的,这意味着您可以执行 /url/id/action/action2..etc。由于您使用的是 laravel,因此您可以阅读 Routing 文档来实现它。同样,我不知道您可以使用 GET 方法隐藏它。
-
好的,我猜你想突出显示选定的菜单?这应该在带有条件检查的实际控制器或视图文件中完成,或者在带有可能与选中或未选中状态配对的菜单名称的数组中完成。就像选择了菜单一样,然后添加一个类 attr 或其他东西。希望这更有帮助。顺便说一句,你刚刚问了一个经典的 XY 问题 :) 呵呵
-
嗨@JoeS 我正在尝试传递菜单的状态(打开/关闭)并避免在每条路线中将其作为变量。 URL 看起来也很丑。现在我看到 $request 容器对应用程序可用,而不管路由是如何调用的(GET、PUT 等)。它包含一堆数据。如何添加到此数据?我误解了什么是可能的吗?
标签: javascript php jquery laravel-5.2