Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.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
Jquery 使用select2插件(v4)防止重新加载数据_Jquery_Ajax_Jquery Select2_Jquery Select2 4 - Fatal编程技术网

Jquery 使用select2插件(v4)防止重新加载数据

Jquery 使用select2插件(v4)防止重新加载数据,jquery,ajax,jquery-select2,jquery-select2-4,Jquery,Ajax,Jquery Select2,Jquery Select2 4,我正在使用插件(v4)并用ajax加载他的选项。 如果我在第一次加载数据时打开选择输入。 当我再次打开select时,相同的数据被重新加载 有没有办法防止这种“重新加载”数据? 我的意思是,如果我只是打开select2,并且之前已经加载了选项,我就不想再加载了 这是我目前的代码: $(select_input).select2({ ajax: { url: url, dataType: 'json', quietMillis: 250, data: funct

我正在使用插件(v4)并用ajax加载他的选项。
如果我在第一次加载数据时打开选择输入。 当我再次打开select时,相同的数据被重新加载

有没有办法防止这种“重新加载”数据? 我的意思是,如果我只是打开select2,并且之前已经加载了选项,我就不想再加载了

这是我目前的代码:

$(select_input).select2({
  ajax: {
    url: url,
    dataType: 'json',
    quietMillis: 250,
    data: function (params) {
      return {
        term: params.term,
        page: params.page,
        page_limit: default_page_size
      };
    },
    processResults: function (data) {
      return {
        results: data.data,
        pagination: {
          more: (data.page * default_page_size) < data.count
        }
      };
    },
    cache: true
  },
  escapeMarkup: function (markup) {
    return markup;
  },
  minimumInputLength: 0,
  templateResult: formatTemplateResult,
  templateSelection: formatTemplateSelection
});
$(选择输入)。选择2({
阿贾克斯:{
url:url,
数据类型:“json”,
安静百万:250,
数据:函数(参数){
返回{
术语:params.term,
页码:params.page,
页面限制:默认页面大小
};
},
processResults:函数(数据){
返回{
结果:数据,
分页:{
更多:(data.page*默认页面大小)
由于您使用的是select2\u v.4,因此必须使用
数据适配器
查询
初始化选择
方法在v.4.0中被折旧) 下面是通过名为
AMD模式
的方法使用
自定义数据适配器
的示例。 我还没有机会测试它,但我相信这会给你一个前进的方向

<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css" rel="stylesheet" />
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.full.min.js"></script>
<script>
    var cachedData;
    $.fn.select2.amd.define('select2/data/customAdapter', ['select2/data/array', 'select2/utils'],
       function (ArrayAdapter, Utils) {
           function CustomDataAdapter($element, options) {
               CustomDataAdapter.__super__.constructor.call(this, $element, options);
           }

           Utils.Extend(CustomDataAdapter, ArrayAdapter);

           CustomDataAdapter.prototype.query = function (params, callback) {
               var retData;
               if (cachedData != undefined) // check if data existing in cachedData variable
                   retData = cachedData;
               else {
                   $.ajax({
                       url: url,
                       dataType: 'json',
                       quietMillis: 250,
                       data: function (params) {
                           return {
                               term: params.term,
                               page: params.page,
                               page_limit: default_page_size
                           };
                       },
                       success: function (data) {
                           retData = {
                               results: data.data,
                               pagination: {
                                   more: (data.page * default_page_size) < data.count
                               }
                           };
                           cachedData = retData; // save the retData in a global variable
                       },
                       error: function (er) {
                           debugger;
                       },
                       cache: true
                   });
               }

               callback(retData);
           };

           return CustomDataAdapter;
       }
);


    $(document).ready(function () {
        var customAdapter = $.fn.select2.amd.require('select2/data/customAdapter');
        $("#select1").select2({
            tags: true,
            dataAdapter: customAdapter,
            escapeMarkup: function (markup) {
                return markup;
            },
            minimumInputLength: 0,
            templateResult: formatTemplateResult,
            templateSelection: formatTemplateSelection
        });
    });
</script>

变量cachedData;
$.fn.select2.amd.define('select2/data/customAdapter',['select2/data/array','select2/utils'],
功能(ArrayAdapter、Utils){
函数CustomDataAdapter($element,options){
CustomDataAdapter.super.constructor.call(此$element,选项);
}
Extend(CustomDataAdapter、ArrayAdapter);
CustomDataAdapter.prototype.query=函数(参数,回调){
var-retData;
if(cachedData!=未定义)//检查cachedData变量中是否存在数据
retData=cachedData;
否则{
$.ajax({
url:url,
数据类型:“json”,
安静百万:250,
数据:函数(参数){
返回{
术语:params.term,
页码:params.page,
页面限制:默认页面大小
};
},
成功:功能(数据){
retData={
结果:数据,
分页:{
更多:(data.page*默认页面大小)