select2 4.0.3 空记录时的处理

Posted 趟坑的

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了select2 4.0.3 空记录时的处理相关的知识,希望对你有一定的参考价值。

使用select2插件,如果后台查找没有记录,不能返回null,要返回一个空数组,不然会报错:data is null

空数组形式为(firefox调试输出):{"items":[],"total_count":0}

完整使用记录如下:

前台html标记:

        <div class="form-group  col-md-6">
					<label for="supplier">供应商</label>
					<select name="supplier" id="supplier" class="form-control" 	>
						
					</select>
			</div>        

 前台JS

$(‘#supplier‘).select2({
    	theme: "bootstrap",
    	placeholder: "选择供应商",
  		allowClear: true,
  		ajax:{
  			url:"{:U(‘Supplier/getvalidSupplier‘)}",
  			dataType:"json",
  			delay:200,
  			data:function(params){
  				return {
  					q:params.term,
  					page:params.page
  				}
  			},
  			processResults:function(data,params){
  				
  				params.page = params.page || 1;
  				
  				return {
			        results: data.items,
			        pagination: {
			          more: (params.page * 10) < data.total_count
			        }
			    };
  			},
  			cache: false
  		},
  		//minimumInputLength: 1,
    });

  后台php TP3.22

public function getvalidSupplier(){
            $q=I("q");
            $page=intval(I("page"))<1?1:I("page");
            $map[‘supplier|contractor|co_addr‘] = array(‘like‘,‘%‘.$q.‘%‘);    
            $map[‘status‘]=1;
            $pageParas[‘pageLength‘]=10;
            $pageParas[‘pageStart‘]=($page-1)*10;            
            $pageParas[‘orderField‘]=‘supplier‘;
            $arr = $this->getPageData($map,null,true,null,$pageParas);
            $i=0;
            $arr2=array();//重点在这里
            foreach ($arr as $key => $row) {
                $arr2[]=array("id"=>$row[id],"text"=>$row[‘supplier‘]);
                $i++;
            }

            $this->ajaxReturn(array(‘items‘=>$arr2,"total_count"=>$i));

        
        }

 

 

以上是关于select2 4.0.3 空记录时的处理的主要内容,如果未能解决你的问题,请参考以下文章

select2 占位符显示空选项

在 4.0.3 js 中使用远程源时如何在 Select2 中设置值

jquery select2的问题

搜索时的Jquery select2自定义javascript函数

select2 - 如何允许空值

select2 向控制器发送空参数