【问题标题】:jquery (server side) search and sorting using ajaxjquery(服务器端)使用ajax进行搜索和排序
【发布时间】:2021-04-25 05:22:45
【问题描述】:

我尝试使用 Ajax 从实时 URL 创建搜索和排序,我使用了搜索功能并设法从 URL 中检索数据。

我在选择选项中显示 Ajax 响应,如下代码所示。我想按值(级别值)的顺序对选择选项进行排序,值在结果中随机检索。

我怎样才能结合搜索和排序功能呢?我使用了很多教程来做到这一点。对于任何知道的人,请帮助我做到这一点。谢谢。

请提供一种解决方案,使用当前搜索功能根据值(按级别)自动排序数据。当前结果示例:

到目前为止,我有这个代码:

function doSearch() {
    $.Ajax({
          URL: 'https://live.ksmobile.net/live/BOYS',
          data: {
            page_size: 10,
            page_index: current_page
          },
          cache: false,
          type: 'GET',
          datatype: 'JSON',
          success: function(r) {
              var max = $('#limit').VAL();

              if (r.data.video_info.length < max) max = r.data.video_info.length;

              for (index = 0; index < max; index++) {
                var entry = r.data.video_info[index];
                var level = parse Int(entry.level);

                if ((level > $('#min').val()) && (level < $('#max').val())) {
                  count++;
                  var HTML = '<div class="entry ' + '"><h="' + entry + '">';
                  HTML += '<h3>Level: <span>' + entry.level + '</span> <span>' + entry.name + '' + '</span>id:<span>' + entry.heat;
                  HTML += '</div>';
                  $('#main').append(HTML);
                }
              }

【问题讨论】:

  • 这些错别字是在您的代码中还是仅在此处的问题中:parse Int$('#limit'). VAL();$('#min'). val()$('#max'). val()$('#main'). append(HTML)? -- 先修复它然后重试。
  • 请提供 HTML 和整个 Javascript 代码,因为缺少一些变量,并且上面提到的 Louys 有一些空格。
  • 如何共享 HTML 和 JS 代码?这里有附件吗?
  • jQuery 不是服务器端
  • 在客户端工作。

标签: javascript html jquery ajax sorting


【解决方案1】:

您可以编写一个自定义排序函数,如下所示:

function sortResults(array) {
    array.sort(function(x, y) {
        if (parseInt(x.level, 10) < parseInt(y.level, 10)) {
            return -1;
        }
        if (parseInt(x.level, 10) > parseInt(y.level, 10)) {
            return 1;
        }
        return 0;
    });
}

然后在你的 for 循环之前调用它:

sortResults(r.data.video_info);

您也可以使用 lodash 之类的库来省点麻烦,然后使用:

r.data.video_info = _.sortBy(r.data.video_info, item => {
    return _.parseInt(item.level);
});

【讨论】:

  • 感谢您的回复,但我尝试了自定义排序数组,但它也无法排序,我如何与整个 JS 代码共享我的 HTML。
  • 不明白为什么它不起作用。我用一个例子对其进行了测试。你能提供你正在迭代的数组吗?即r.data.video_info
  • 它部分工作,实时 URL 中的数组“live.ksmobile.net/live/BOYS”,搜索功能检索数据并将它们显示在 html 页面中,因此排序功能只能逐页工作,而我想对一次在所有页面中排列。
  • 实际上自定义排序是按字母顺序工作的(2,22,3,30,36,4,45,...),所以排序无效。
  • 将解决方案更新为按数字而非字符串排序
猜你喜欢
  • 2014-01-29
  • 2015-08-27
  • 2020-01-26
  • 2023-02-13
  • 1970-01-01
  • 2013-03-11
  • 2021-06-05
  • 2017-06-17
  • 2021-06-09
相关资源
最近更新 更多