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

使用onclick AJAX调用加载Select2语句数据

东方富
2023-03-14

目前,我正在使用一个控制器来获取所有数据,并将其放置在视图类中的foreach语句中。因此,每当加载页面时,它都会执行此函数。为了实现这一点,我使用了如下方法

控制器类:

$add['sources']= $this->contacts_model->get_array();

查看类别:

<select name="contact_source" id="contact_source" class="form-control select2 <?php echo form_error('contact_source') ? 'red' : '' ?>" required/>          
          <option value="">Select</option>
          <?php foreach($sources as $source): ?>
          <option value="<?php echo $source['id']; ?>" <?php echo ($this->input->post('contact_source') == $source['id'])?'selected="selected"':''?>><?php echo $source['title']; ?></option>
          <?php endforeach; ?>
   </select>

但是现在我希望页面加载得更快,因此只有当用户单击该特定的select2语句时,我才希望加载下拉列表。我尝试了以下代码来获取具有选择2功能的select2变量,即通过下拉列表获取输入文本,但都不起作用。它只是在我的页面加载时打开一个正常的下拉列表。

查看类别:

<select name="contact_source" id="contact_source" class="form-control select2 <?php echo form_error('contact_source') ? 'red' : '' ?>" required/>          
              <option value="">Select</option>
              <?php foreach($sources as $source): ?>
              <option value="<?php echo $source['id']; ?>" <?php echo ($this->input->post('contact_source') == $source['id'])?'selected="selected"':''?>><?php echo $source['title']; ?></option>
              <?php endforeach; ?>
</select>

$(document).ready(function(){
  $('#contact_source').on('click', function(e) {
    $("#contact_source").select2({
      minimumInputLength: 2,
      tags: [],
      ajax: {
          url: "<?php echo site_url('contacts/add'); ?>/",
          dataType: 'json',
          type: "GET",
          delay : 50,
          data: function (data) {
              return {
                sources: data.sources
              };
          },
          results: function (data) {
              return {
                  results: $.map(data, function (item) {
                      return {
                          text: item.sources,
                          id: item.id
                      }
                  })
              };
          }
      }
  });
})
});

共有1个答案

汤飞
2023-03-14

在<代码>

并删除(“#contact\u source”)。在('click',函数(e){

我建议您使用jQuery自动完成。https://jqueryui.com/autocomplete/#remote

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

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

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

  • 在此示例中:https://jsfiddle.net/wqd4ebyn/2/: 我正在尝试使用ajax获取远程数据并使用当前选项预加载列表。除非我删除了ajax,否则它不起作用: 我的列表太大了。我想要的是列出一些非常常见的选项,其余的由ajax列出。当前的实现确实允许两者兼而有之,静态选项或动态选项。我需要两者。

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

  • 我试图在一个保护语句中调用一个名为“nextPage”的函数,但它说“()”不能转换为“Bool”。要调用此函数,我需要做什么