当前位置: 首页 > 知识库问答 >
问题:

通过ajax获取数据,然后使用select应用过滤器

李兴为
2023-03-14

我有3个不同的选择菜单: 1.类别2.状态3.城市

我正在使用ajax获取“#searchresult”上的数据,方法是使用jquery on change在PHP上发送数据。

抓取正在正常进行,但仅针对一个“选择”选项。

我想要的是当用户改变另一个“选择”选项时,它将更新当前“#搜索结果”获取的数据。像:假设,在将“类别”更改为“汽车”时,它在“#搜索结果”上获取“汽车”的所有数据,现在在“州”更改为“纽约”时,它更新了在纽约的“#搜索结果”。

我尝试了许多不同的方法,比如使用多个if语句来确定select是否为choosen,但是没有找到where。

提前谢谢。

我的代码是:

$(document).ready(function() {
  $("#category").change(function() {

    var data = $("#category option:selected").val();
    var category = $("#category option:selected").text();

    var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('id');
    $.ajaxSetup({
      headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      }
    });

    $.ajax({
      type: "POST",
      url: "category",
      data: {
        data: data
      },
      dataType: 'json',
      cache: false,
      success: function(response) {
        $("#searchresult").html("");

        for (var i = 0; i <= 5; i++) {
          $("#searchresult").append('<div class="col-12 col-sm-10 col-md-4 col-lg-3 col-xl-2 merchant" style="background-image: url(https://im.proptiger.com/1/1543935/6/green-villa-elevation-7990949.jpeg?width=380&height=285);">   	<div class="filter"></div>   	 <span class="category">' + category + '</span>   		<div class="col align-self-end">   		<p>' + response.contractor[i].first_name + '</p>   		<span>' + response.contractor[i].city_name + ',' + response.contractor[i].state_name + '</span>   		</div>   	<div class="slideup">   		<p>More info?</p>   		<a href="' + response.contractor[i].url + '" class="btn">Profile</a>   	</div>   </div>');
        }
      }
    });

  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select name="category" id="category" class="chosen">
<option value="0" default>category</option>
<option value="1">Car</option>
<option value="2">Van</option>
</select>

<select name="state" id="state" class="chosen">
<option value="0" default>state</option>
<option value="1">Any</option>
<option value="2">other</option>
</select>

<select name="city" id="city" class="chosen">
<option value="0" default>city</option>
<option value="1">New york</option>
<option value="2">Chicago</option>
</select>

<div id="searchresult"></div>

PHP以json的形式发送数据。

谢谢

共有1个答案

孙言
2023-03-14

@user5745970这里是我创建的提琴示例,让您了解需要做什么。下面是小提琴的链接

这个想法是为每个选择设置3个不同的更改事件,并触发对服务器的调用。您需要做的是将其他选择值作为数据发送(如果选择)。例如,如果在已选择类别时更改城市,则需要将类别和城市发送到服务器以获得响应。如果所有3个服务器端调用都返回相同的JSON结构,那么您只能有1个成功和错误回调。

请根据需要更改URL、方法类型和回调。

$(document).ready(function() {
	var category = '';
  var state = '';
  var city = '';
  $("#category").on('change', function() {
    category = $("#category option:selected").text();
    // here you need to check if state or city is selected, you need to send those values as the data to your server
		ajax('https://jsonplaceholder.typicode.com/posts/1', 'GET', category, handleCategorySuccess, handleCategoryError)
  });
  
  $("#state").on('change', function() {    
    state = $("#state option:selected").text();    
    // here you need to check if category or city is selected, you need to send those values as the data to your server
		ajax('https://jsonplaceholder.typicode.com/posts/1', 'GET', state, handleStateSuccess, handleStateError)
  });
  
  $("#city").on('change', function() {
    city = $("#city option:selected").text();    
    // here you need to check if state or category is selected, you need to send those values as the data to your server
		ajax('https://jsonplaceholder.typicode.com/posts/1', 'GET', city, handleCitySuccess, handleCityError)
  });

});

var ajax = function(url, method, data, successCallBack, errorCallBack) {	
	$.ajax({
      type: method,
      url: url,
      data: data,
      dataType: 'json',
      cache: false,
      success: successCallBack,
      error: errorCallBack
  });
}

function handleCategorySuccess(response) {
	alert(response);
}

function handleCategoryError() {
	alert('error');
}

function handleStateSuccess(response) {
	alert(response);
}

function handleStateError() {
	alert('error');
}

function handleCitySuccess(response) {
	alert(response);
}

function handleCityError() {
	alert('error');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="category" id="category" class="chosen">
  <option value="0" default>category</option>
  <option value="1">Car</option>
  <option value="2">Van</option>
</select>

<select name="state" id="state" class="chosen">
  <option value="0" default>state</option>
  <option value="1">Any</option>
  <option value="2">other</option>
</select>

<select name="city" id="city" class="chosen">
  <option value="0" default>city</option>
  <option value="1">New york</option>
  <option value="2">Chicago</option>
</select>

<div id="searchresult"></div>
 类似资料:
  • 首先,请让我知道我正在做的是不是对dplyr的不当使用,因为我不确定我是否以最佳方式实现了这一点。我有以下数据帧: 我想做的过滤有点罗嗦,但我会尝试-我想通过删除col1 == '0 '的所有行来过滤数据帧,如果该行出现在该用户的第一行之后,其中col1 == '1 '。(粗体表示我把原问题搞砸了,把0和1调换了)。 例如,对于用户7,第3行的col1 == '1 ',所以我想过滤第3行之后col

  • 问题内容: 我最近开始学习Hibernate技术,不得不使用Hibernate从数据库中获取数据。问题是我只能通过SSH隧道连接到数据库。我可以在文件中使用任何属性来解决此问题吗?或者,您可以建议另一种新手可以理解的方式。 问题答案: 也许使用Jsch。一些示例可以为您提供解决之道。 另一种方法是使用HTTP代理处理程序和端口转发功能来实现自己的SSH SocketFactory。起点可以是: 您

  • 问题内容: 我想将页面上的一些数据发送到servlet 所以我写了下面的jQuery来做到这一点 我使用所有数据构建一个json字符串,并将其直接发送到servlet 但是我不知道如何从servlet中的ajax获取全部数据 如果查看来自chrome的请求标头的Form Data段 您会看到整个json字符串是关键。 问题答案: 看这里, 您的归属是错误的。它不应该是字符串,而是真实的JSON对象

  • 问题内容: 我正在处理Freecodecamp Twitch API项目,但无法获取显示正确的API数据。徽标,频道和状态返回为未定义。 我知道API肯定可以正常工作。我编写代码的方式一定有问题,但无法弄清楚是什么。 这是我的代码: 这是我的代码笔的链接:http ://codepen.io/drhectapus/pen/VPNQJa?editors=1011 任何帮助将不胜感激。 问题答案: 由

  • 我使用Room和RxJava,我想使用第二个的功能来过滤来自第一个的数据。 假设房间是返回用户。 谢谢

  • 问题内容: 我的页面上有一个通过URL调用spring控制器的页面。 现在,控制器看起来像 我发送的数据使用模式,并试图访问它的,但它显示为空白。 有什么方法可以在查看页面上接收该数据? 问题答案: 您必须为Spring Ajax调用示例添加@ResponseBody批注