Javascript 单击不在jquery select2 ajax中使用templateResult和templateSelection

Javascript 单击不在jquery select2 ajax中使用templateResult和templateSelection,javascript,jquery-select2,Javascript,Jquery Select2,我正在尝试使用ajax使用select2。 我尝试过这个例子,但由于某种原因,它不起作用。 我错过了什么?如果你能告诉我,我将不胜感激 下面是我的js代码 function formatState (state) { console.log(state); if(state.loading) { return state.text; } let $state = $( '<d

我正在尝试使用ajax使用select2。 我尝试过这个例子,但由于某种原因,它不起作用。 我错过了什么?如果你能告诉我,我将不胜感激

下面是我的js代码

      function formatState (state) {
        console.log(state);
        if(state.loading) {
          return state.text;
        }
        let $state = $(
          '<div>' +
          '<h6>'+state.fld_name+' <small class="text-muted">'+state.fld_tel+'</small></h6>' +
          '<p>'+state.fld_address+'</p>' +
          '</div>'
        );
        return $state;
      };

      function formatStateSelection(state) {
        return state.fld_name || state.text;
      }

        $('#select').select2({
          cacheDataSource: [],
          placeholder: "Select a state",
          allowClear: true,
          query: function(query) {
            self = this;
            var cachedData = self.cacheDataSource;
            if(cachedData) {
              query.callback({results: cachedData});
              return;
            } else {
              $.ajax({
                url: '/api/hq/all',
                type: 'GET',
                success: function(data) {
                  self.cacheDataSource = data;
                  query.callback({results: data});
                }
              })
            }
          },
          templateResult: formatState,
          templateSelection: formatStateSelection,
          escapeMarkup: function(m) {
            // Do not escape HTML in the select options text
            return m;
          }
函数格式化状态(状态){
console.log(状态);
如果(状态加载){
返回state.text;
}
让$state=$(
'' +
''+state.fld_name+''+state.fld_tel+''+
“”+state.fld_address+”

”+ '' ); 返回$state; }; 函数formatStateSelection(状态){ 返回state.fld_name | | state.text; } $(“#选择”)。选择2({ cacheDataSource:[], 占位符:“选择一个状态”, allowClear:是的, 查询:函数(查询){ self=这个; var cachedData=self.cacheDataSource; 如果(缓存数据){ callback({results:cachedData}); 返回; }否则{ $.ajax({ url:“/api/hq/all”, 键入:“GET”, 成功:功能(数据){ self.cacheDataSource=数据; 回调({results:data}); } }) } }, templateResult:formatState, templateSelection:formatStateSelection, 逃逸标记:功能(m){ //不要在“选择选项”文本中转义HTML 返回m; }
添加到,,, 我的代码如上所述,但是否有任何优雅的代码只在服务器上加载一次? 示例中的代码每次搜索时都与服务器通信,但这不是我想要的。 我想在一次服务器调用中获取所有数据