Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择2-从远程加载数据一次,但在客户端执行搜索_Javascript_Jquery_Jquery Select2 - Fatal编程技术网

Javascript 选择2-从远程加载数据一次,但在客户端执行搜索

Javascript 选择2-从远程加载数据一次,但在客户端执行搜索,javascript,jquery,jquery-select2,Javascript,Jquery,Jquery Select2,我正在尝试使用“查询”对象来执行我想要的操作。除了我选择了一个选项“什么都不会发生”(占位符不会被替换)之外,其他一切都有效。 我遵循了这篇文章的指导 Thanx需要帮助,我想我找到了一个解决方案: var s2data = $view.select2({ ajax: { url: 'https://api.github.com/search/repositories', data: { q: 'select2' }, dataType: 'j

我正在尝试使用“查询”对象来执行我想要的操作。除了我选择了一个选项“什么都不会发生”(占位符不会被替换)之外,其他一切都有效。 我遵循了这篇文章的指导


Thanx需要帮助,

我想我找到了一个解决方案:

var s2data = $view.select2({
  ajax: {
    url: 'https://api.github.com/search/repositories',
    data: {
        q: 'select2'
    },
    dataType: 'json',
    processResults: function(data) {
      var items = [];
      for (var row of data.items) {
        items.push({
          id: row.id,
          text: row.name
        });
      }

      this.options.set('cacheDataSource', {items: items});

      return {
        results: items
      };
    }
  },
  cacheDataSource: [],
  allowClear: true,
  placeholder: 'Select Values ...',
  width: '100%',
}).data('select2');

s2data.dataAdapter.query = function(params, callback) {

  var cacheDataSource = this.options.get('cacheDataSource');
  if (cacheDataSource && cacheDataSource.items) {

    var term = params.term;
    if (typeof term == "undefined" || term == null) {
        callback({results: cacheDataSource.items});
        return
    }

    term = $.trim(term.toLowerCase());
    if (term == "") {
        callback({results: cacheDataSource.items});
        return
    }

    callback({ results: cacheDataSource.items.filter(function(item) {
        return item.text.toLowerCase().includes(term);
      })
    });
  } else {
    // call the original logic
    var ajaxAdapterFunc = jQuery.fn.select2.amd.require('select2/data/ajax');
    var ajaxAdapter = new ajaxAdapterFunc(this.$element, this.options);

    ajaxAdapter.query(params, callback);
  }
}
jsfiddle:

var s2data = $view.select2({
  ajax: {
    url: 'https://api.github.com/search/repositories',
    data: {
        q: 'select2'
    },
    dataType: 'json',
    processResults: function(data) {
      var items = [];
      for (var row of data.items) {
        items.push({
          id: row.id,
          text: row.name
        });
      }

      this.options.set('cacheDataSource', {items: items});

      return {
        results: items
      };
    }
  },
  cacheDataSource: [],
  allowClear: true,
  placeholder: 'Select Values ...',
  width: '100%',
}).data('select2');

s2data.dataAdapter.query = function(params, callback) {

  var cacheDataSource = this.options.get('cacheDataSource');
  if (cacheDataSource && cacheDataSource.items) {

    var term = params.term;
    if (typeof term == "undefined" || term == null) {
        callback({results: cacheDataSource.items});
        return
    }

    term = $.trim(term.toLowerCase());
    if (term == "") {
        callback({results: cacheDataSource.items});
        return
    }

    callback({ results: cacheDataSource.items.filter(function(item) {
        return item.text.toLowerCase().includes(term);
      })
    });
  } else {
    // call the original logic
    var ajaxAdapterFunc = jQuery.fn.select2.amd.require('select2/data/ajax');
    var ajaxAdapter = new ajaxAdapterFunc(this.$element, this.options);

    ajaxAdapter.query(params, callback);
  }
}