Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Laravel AJAX-记住多个选择的过滤器_Javascript_Php_Jquery_Ajax_Laravel - Fatal编程技术网

Javascript Laravel AJAX-记住多个选择的过滤器

Javascript Laravel AJAX-记住多个选择的过滤器,javascript,php,jquery,ajax,laravel,Javascript,Php,Jquery,Ajax,Laravel,在过去的几周里,我一直在努力解决这个问题。我不能就这么胡思乱想 在我的网页上,我一共有四个过滤器:一个搜索、按年份过滤、按发布地点过滤和按国家过滤。这些过滤器可以自己完美地工作。他们设法快速过滤我的数据库并返回我需要的结果 问题在于,如果应用一个筛选器,然后决定应用另一个筛选器,则会重置第一个筛选器。我正在进行的AJAX调用根本无法记住我应用的第一个过滤器是什么。从我的研究中,我发现我需要以某种方式保存用户选择的过滤器,并用按钮或其他东西应用它们。我认为这是实现这一目标的最简单方法 基本上,我们

在过去的几周里,我一直在努力解决这个问题。我不能就这么胡思乱想

在我的网页上,我一共有四个过滤器:一个搜索、按年份过滤、按发布地点过滤和按国家过滤。这些过滤器可以自己完美地工作。他们设法快速过滤我的数据库并返回我需要的结果

问题在于,如果应用一个筛选器,然后决定应用另一个筛选器,则会重置第一个筛选器。我正在进行的AJAX调用根本无法记住我应用的第一个过滤器是什么。从我的研究中,我发现我需要以某种方式保存用户选择的过滤器,并用按钮或其他东西应用它们。我认为这是实现这一目标的最简单方法

基本上,我们想要实现的是允许用户选择多个过滤器,而不必重置第一个过滤器

这是我当前用于AJAX调用的代码:

$document.readyfunction{ $“过滤器类型”。选择2; $'filter-year'。选择2; $'filter-pad'。选择2; $'search'。在'keyup'上,函数{ $value=$this.val; 延迟函数{ 如果“搜索”。长度>3{ $.ajax{ 键入:“get”, url:“{$operatorname->spadoc_cd}”, 数据:{ “搜索”:$value }, 成功:functiondata{ $‘数据持有者’.htmldata; } }; } }, 300; }; $filter-pad.changefunction{ $value=$this.val; $.ajax{ 类型:get, url:{{$operatorname->spadoc_cd}, 数据:{ “搜索”:$value, 类型:“站点” }, 成功:functiondata{ $‘数据持有者’.htmldata; } }; }; $filter-type.changefunction{ $value=$this.val; $.ajax{ 类型:get, url:{{$operatorname->spadoc_cd}, 数据:{ “搜索”:$value, 类型:“对象类型” }, 成功:functiondata{ $‘数据持有者’.htmldata; } }; }; $filter-year.change函数{ $value=$this.val; $.ajax{ 类型:get, url:{{$operatorname->spadoc_cd}, 数据:{ “搜索”:$value, 类型:“发布年份” }, 成功:functiondata{ $‘数据持有者’.htmldata; } }; }; }
我更新了我的答案,因为这不是最好的方法,而且根本不正确。 首先,您可以在GET DATA中发送过滤器,在您的情况下,使用会话会更明智,在ajax调用中,添加过滤器作为参数(如果选择或键入),这取决于您的输入,类似于

data: {
   'filter-1': $('.myInput1').val(), // take value from filter 1 and send them as get params
   'filter-2': $('.myInput2').val(), // take value from filter 2 and send them as get params
   // ...........
}
所以你的url应该像这个mydomain.me/myurl?search=someValue?filter-1=somevalue1&filter-2=somevalue2

例如,如果要在每次选择更改时更新数据,请同时从其他筛选器获取值,这样它们就不会丢失

 $("#filter-type").change(function() {
$value = $(this).val();
$value2 = $('otherFilter2').val();
$value3 = $('otherFilter3').val();
$.ajax({
  type: "get",
  url: "{{$operatorname->spadoc_cd}}",
  data: {
    'search': $value,
    'filter2' $value2,
    'filter3' $value3,
  // other code ....
因此,您可以从这个url获取过滤器,并在查询中使用它们

然后检查php代码中是否存在值

if(!empty($request->filter-1)) {
   $q->orWhere('someData','LIKE','%'.$request->filter1.'%');
}

对其他人也一样。当然,您可以使用会话,但这样做没有意义,将数据作为GET参数发送将更简单、更好。

我更新了我的答案,因为这不是最好的方法,而且根本不正确。 首先,您可以在GET DATA中发送过滤器,在您的情况下,使用会话会更明智,在ajax调用中,添加过滤器作为参数(如果选择或键入),这取决于您的输入,类似于

data: {
   'filter-1': $('.myInput1').val(), // take value from filter 1 and send them as get params
   'filter-2': $('.myInput2').val(), // take value from filter 2 and send them as get params
   // ...........
}
所以你的url应该像这个mydomain.me/myurl?search=someValue?filter-1=somevalue1&filter-2=somevalue2

例如,如果要在每次选择更改时更新数据,请同时从其他筛选器获取值,这样它们就不会丢失

 $("#filter-type").change(function() {
$value = $(this).val();
$value2 = $('otherFilter2').val();
$value3 = $('otherFilter3').val();
$.ajax({
  type: "get",
  url: "{{$operatorname->spadoc_cd}}",
  data: {
    'search': $value,
    'filter2' $value2,
    'filter3' $value3,
  // other code ....
因此,您可以从这个url获取过滤器,并在查询中使用它们

然后检查php代码中是否存在值

if(!empty($request->filter-1)) {
   $q->orWhere('someData','LIKE','%'.$request->filter1.'%');
}

对其他人也一样。当然,您可以使用会话,但这样做没有意义,当您发送ajax请求时,将数据作为GET参数发送会更简单、更好。

为什么不在会话中存储过滤器呢?@skillton-我实际上从未想过这一点。这似乎是个好主意!我想第一步是找出如何实现它。你对如何做到这一点有什么建议吗?@Skillton在URL中的每个查询之间都没有问号。您将如何着手解决这个问题?当您发送ajax请求时,为什么不将过滤器存储在会话中?@skillton-实际上我从未想过这一点。这似乎是个好主意!我想第一步是找出如何实现它。你对如何做到这一点有什么建议吗?@Skillton在URL中的每个查询之间都没有问号。你将如何着手解决这个问题?对不起,我在手机上输入,无法编写完整的代码来帮助你。我将用你的问题中的过滤器-1替换什么?我设法让Javascript部分工作,但无法让PHP部分工作。感谢
s问题在于ajax调用。例如$filter-type.changefunction{…在每个请求上,您只从一个select and send ITA中获取值,所有其他筛选器都是空的,因为您没有发送它们,当它到达php时,除了$request->type之外,所有$request->某物都将是空的,之后您将覆盖html。当您触发on change事件时,您还应该提供其他筛选器值ey已选中,同时在一个函数中移动更改事件,避免重复codeLet us。抱歉,我在移动设备上键入,无法编写完整的代码来帮助您,我将用您的问题中的filter-1替换什么?我成功地使Javascript部分工作,但无法使PHP部分工作。谢谢!问题出在您的ajax中调用。例如$filter-type.changefunction{…在每个请求上,您只从一个select and send ITA中获取值,所有其他筛选器都是空的,因为您没有发送它们,当它到达php时,除了$request->type之外,所有$request->某物都将是空的,之后您将覆盖html。当您触发on change事件时,您还应该提供其他筛选器值选择ey,同时在一个函数中移动更改事件,避免重复codeLet。