如何使用jquery滑块过滤100条记录而不是每次都去服务器?

时间:2011-03-09 07:24:39

标签: java jquery ajax json jsp

我有一个要求,比如我必须在JSP中显示1000条记录。我必须使用Jquery Slider过滤记录。现在我向服务器发送每次移动的请求。是否有任何简单的方法来过滤记录没有将请求发送到服务器。

2 个答案:

答案 0 :(得分:0)

为了在没有往返服务器的情况下执行此操作,您需要在客户端中加载所需的所有数据。这当然会在最初花费很多时间,并且可能对客户来说很重要。我想,对于几千条记录,它会没问题。使用ajax将它们加载到客户端,以便浏览器保持响应。即使您最初需要显示其中的一小部分,也要加载所有数据。根据滑块选择显示或多或少。

答案 1 :(得分:0)

您可以将记录属性存储到DOM中。例如,您可以执行以下操作:

//assuming you get your results via ajax/JSON
search_filter = new Array();
$.ajax({
   success: function(json) {
      for (var key in json) {
         search_filter.push(json[key]) //this loop might not be necessary depending on how json looks like
      }
   }
});

//We define jRecords globally for performance gains, however, updates to the table are not registered
var jRecords = $('table#relevant_table>tr');
$('input#search').bind('change', function() {
   var jExceptions = $;
   var this_value = $(this).val();
   var size = jRecords.size();
   for (var i=0; i<size; i++) {
      if (search_filter[i].relevant_value > this_value) {
         jExceptions.add(jRecords.eq(i));
      };
   }

   jRecords.not(jExceptions).hide();
   jExceptions.show();
})

这展示了 如何使用DOM进行过滤器存储,并使用它来通过js过滤记录。我试图避免大量选择器和单个操作来获得性能(因为你正在使用数千行,它可能很慢)而是选择一起搜索行并一次更新它们。但是,此示例可能仍未针对您的特定任务进行优化。我还没有测试过这个例子是否真的有用,但我非常有信心(虽然会有一些语法错误)。