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

如何用AJAX预加载select2插件?

巢安澜
2023-03-14

在此示例中:https://jsfiddle.net/wqd4ebyn/2/:

$(document).ready(function() {
    $('.js-example-basic-single').select2(
      {
          ajax: {
          url: 'https://jsonplaceholder.typicode.com/todos',
          dataType: 'json'
          }
      }
    );
});

我正在尝试使用ajax获取远程数据并使用当前选项预加载列表。除非我删除了ajax,否则它不起作用:

$(document).ready(function() {
    $('.js-example-basic-single').select2(
    );
});

我的列表太大了。我想要的是列出一些非常常见的选项,其余的由ajax列出。当前的实现确实允许两者兼而有之,静态选项或动态选项。我需要两者。

共有1个答案

谭仰岳
2023-03-14

请查看官方文件:https://select2.org/data-sources/ajax您需要有一个处理请求参数的函数和另一个处理响应数据的函数。

你试过这个吗?如何通过Ajax请求将Select2与JSON一起使用?

编辑:我在这里创建了一个JSFIddle与您的代码:https://jsfiddle.net/7bdeo38c/6/

HTML:

<select class="js-example-basic-single" name="state"></select>

JS:

$(document).ready(function() {
    $('.js-example-basic-single').select2(
      {
        ajax: {
          url: 'https://jsonplaceholder.typicode.com/todos',
          dataType: 'json',
          data: function (params) {
            return {
              q: params.term // search term
            };
          },
          processResults: function (data) {
            return {
              results: data // results
            };
          }
        },
        templateResult: formatResults, // Controls how the dropdown looks
        templateSelection: formatSelection, // Controls what is displayed after selecting an item
        escapeMarkup: function (m) { return m; }, // Let our custom formatter work
      }
    );
});

function formatResults (data) {
  if (data.loading) {
    return data.text;
  }

  var result;
  if (data.completed) {
        result = "<div class='select2-result-repository__description'>" + data.title + "</div>";
  }
  return result;
}

function formatSelection (data) {
  return data.id + ' - ' + data.title || data.text;
}

官方Select2文档中也有类似的示例。有关GitHub存储库示例的完整代码,请参见Ajax一章的末尾。https://select2.org/data-sources/ajax

 类似资料:
  • 问题内容: 我正在使用Select2 JS版本4.0.0-rc.1,并且无法通过远程Ajax方法加载建议。 以下是标记和代码 JavaScript jQuery 服务器返回的Json结果 我完全不确定是否需要编写特定的函数来显示建议,有关Ajax部分的评论指出,我们不应更改结果Json数据。 现在有人请告诉我,让代码正常工作以显示建议还需要做些什么。 我想随着新版本的select2发生了很多变化。

  • 目前,我正在使用一个控制器来获取所有数据,并将其放置在视图类中的foreach语句中。因此,每当加载页面时,它都会执行此函数。为了实现这一点,我使用了如下方法: 控制器类: 查看类别: 但是现在我希望页面加载得更快,因此只有当用户单击该特定的select2语句时,我才希望加载下拉列表。我尝试了以下代码来获取具有选择2功能的select2变量,即通过下拉列表获取输入文本,但都不起作用。它只是在我的页

  • 问题内容: 我想为我的项目使用select2插件。我遵循了 此 示例,但对我而言不起作用。 JSON输出 : 剧本 : HTML : 这是我使用以下代码测试代码时的结果: Select2:AJAX结果未在响应键中返回数组。 我在哪里弄错了? 问题答案: 从提供的示例链接到所收到的错误消息,您似乎都在使用Select2 4.0。但是,您的代码是为Select2的早期版本编写的。 如果要继续使用Sel

  • 问题内容: 我有以下代码(javascript): 对于服务器端,我正在使用ASP MVC4。select使用ajax获取数据并呈现选项,但是该选项是不可选择的。在阅读其他文章时,他们使用id函数进行了描述,但是此函数似乎在我使用的2.4的select2版本上不见了 我在github 上显示的文档中遵循ajax的示例 “加载远程数据” 问题答案: 如果您的ajax响应没有 id 和 text 属性

  • 问题内容: 我正在使用select2插件(v4),并使用ajax加载他的选项。 如果我第一次打开选择输入,将加载数据。当我再次打开选择时,将重新加载相同的数据。 有什么方法可以防止这种“重新加载”数据?我的意思是,如果我只是打开select2并且先前已加载选项,则我不想再次加载。 这是我当前的代码: 问题答案: 由于您正在使用select2_v.4,因此必须使用(并且方法在V.4.0中已弃用)以下

  • 到目前为止还不错。所有的省都正确地改变了,但是当它开始加载时,Select2会显示状态下拉列表的“未定义”,即使我将其设置为 我假设这可能是因为加载时,选择的国家是“美国”,它填充了一个州的列表,但没有一个是默认的或选择的。有没有其他方法来定义一个默认值,使它不显示“未定义”? 另一个(但不太重要的)问题是,例如,当某人选择“美国”,然后选择“亚利桑那”时,如果该人随后将国家改为“加拿大”,“亚利