Javascript Laravel5.2使用jQuery向请求添加变量
编辑:这可以通过使用jQuery向客户机中的Laravel cookie添加变量来实现吗?我知道Cookie是在GET期间附加到请求的Javascript Laravel5.2使用jQuery向请求添加变量,javascript,php,jquery,laravel-5.2,Javascript,Php,Jquery,Laravel 5.2,编辑:这可以通过使用jQuery向客户机中的Laravel cookie添加变量来实现吗?我知道Cookie是在GET期间附加到请求的 在执行GET路由请求之前,是否可以使用jQuery向Laravel 5.2中的$request容器添加变量 本质上,我试图将一个值传递给GET请求,并将其作为参数保留在URL之外(并且对用户隐藏) 我的HTML本质上是一个菜单: <ul class="sidebar-nav nav-pills nav-stacked " id="menu">
在执行
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>
转到$request
容器,然后允许单击事件路由到href
目的地
现在,在Laravel end,我应该能够访问其价值,如下所示:
$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';
});
}
函数addURL(元素)
{
$(元素).attr('href',function(){
返回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
}
函数addURL(元素)
{
--->将menuState=value添加到$request容器中,然后继续获取请求
}
好的,我将尝试为您的问题提供一个更完整的解决方案
正如您所指出的,您的菜单url应该看起来更好;他们应该有文字,而不是数字(这对搜索引擎优化也有好处)。
href attr可以设置为相对url,如href='home'或href='about'
现在的问题是如何传递所有页面的菜单状态。在本例中,您可能不想使用$request变量作为菜单状态,我认为应该为不同的页面预先确定。控制器应设置一些菜单状态变量数组,其中包含每个菜单的开/关。(或者只是一个打开菜单的字符串集,然后您需要在菜单中循环并执行条件检查,由您选择)
在这种情况下,您可能可以为菜单使用视图生成器,如果您懒惰,也可以在serviceProvider中使用view()->share。检查必要的条件并传递结果。在这种情况下,我认为菜单状态应该从脚本中使用Route::url()访问的url中清除
编辑:
好啊所以我终于明白了讨论之后发生了什么。以下是我的建议。我不会费心去坚持菜单状态。大多数网站都有悬停效果,菜单在鼠标悬停时展开,然后单击菜单转到另一个页面,您希望在该页面上看到更多内容,因此菜单应该折叠。如果用户确实希望选择将菜单扩展为默认选项,请在其配置文件中设置该选项作为首选项。但是,不要使用切换JavaScript,因为他们有时可能仍然希望折叠菜单:)好的,所以我将尝试为您的问题提供一个更完整的解决方案 正如您所指出的,您的菜单url应该看起来更好;他们应该有文字,而不是数字(这对搜索引擎优化也有好处)。
href attr可以设置为相对url,如href='home'或href='about'
现在的问题是如何传递所有页面的菜单状态。在本例中,您可能不想使用$request变量作为菜单状态,我认为应该为不同的页面预先确定。控制器应设置一些菜单状态变量数组,其中包含每个菜单的开/关。(或者只是一个打开菜单的字符串集,然后您需要在菜单中循环并执行条件检查,由您选择)
在这种情况下,您可能可以为菜单使用视图生成器,如果您懒惰,也可以在serviceProvider中使用view()->share。检查必要的条件并传递结果。在这种情况下,我认为菜单状态应该从脚本中使用Route::url()访问的url中清除
编辑:
好啊所以我终于明白了讨论之后发生了什么。以下是我的建议。我不会费心去坚持菜单状态。大多数网站都有悬停效果,菜单在鼠标悬停时展开,然后单击菜单转到另一个页面,您希望在该页面上看到更多内容,因此菜单应该折叠。如果用户确实希望选择将菜单扩展为默认选项,请在其配置文件中设置该选项作为首选项。但是,不要使用切换JavaScript,因为有时他们可能仍然希望折叠菜单:)我认为最简单的方法是在单击
a
后阻止链接重定向,并添加单击事件以捕获此单击,然后使用jquery$.get()
方法添加所需参数并发送请求:
$('#menu').on('click', 'a', funtion(e){
e.pereventDefault(); //prevent link redirection after click
$.get($(this).attr('href'), {menuState: 'state'}, function(response){
//response variable contain response from laravel controler
})
});
希望这能有所帮助。IMO最简单的方法是在单击
a
后防止链接重定向,并添加单击事件以捕获此单击,然后使用jquery$。get()
方法添加所需参数并发送请求:
$('#menu').on('click', 'a', funtion(e){
e.pereventDefault(); //prevent link redirection after click
$.get($(this).attr('href'), {menuState: 'state'}, function(response){
//response variable contain response from laravel controler
})
});
希望这有帮助。如果不希望显示查询字符串,请使用POST方法。要通过JS:document.myformname.fieldname=fieldvalue添加字段值,请执行document.myformname.submit(),如果您想改为使用javascript提交。Hi@JoeS,请理解。但我试图通过GET来实现这一点,因为我并不是发布表单本身,而是通过GET请求激活链接重定向。我试图避免手动将请求转为POST,因为这会混淆应用程序路由。这是应用程序的主菜单。所以这是用rest风格和HTTP GET动词完成的,这意味着你可以做/url/id/action/action2..等等。因为您使用的是laravel,所以可以阅读路由文档来实现它。同样,我不知道你可以用GET方法隐藏它。好吧,我想你想突出显示选中的菜单吗?这应该在实际控制器或视图文件中使用条件检查或带有菜单名的数组(可能与所选菜单名配对)来完成