选择2“无法加载ajax结果”

Posted

技术标签:

【中文标题】选择2“无法加载ajax结果”【英文标题】:Select 2 "ajax results could not be loaded" 【发布时间】:2016-11-09 17:42:01 【问题描述】:

抱歉,找不到解决办法。

每当我尝试进行一些搜索时,select2 都会显示“无法加载结果”。

我认为我的 ajax 设置是错误的

html:

<select class="js-data-example-ajax form-control" multiple="multiple"></select>

脚本:

$(".js-data-example-ajax").select2(
    ajax: 
        url: '@Url.Action("LoadCity", "Addresses")',
        dataType: 'jsonp',
        delay: 250,
        data: function(params) 
            return 
                q: params.term, // search term
                page: params.page
            ;
        ,
        processResults: function(data) 
            return 
                results: data
            ;
        ,
        cache: true
    ,
    minimumInputLength: 1,

);

screen


添加 08.07.2016

一些改变 ajax 设置:

dataType: 'jsonp'

dataType: 'json'

并添加

type: 'GET',

现在没有消息“无法加载结果”,也没有结果

【问题讨论】:

返回的数据应该是数组 od 对象,而您收到的是单个对象。 好的,我这样做了: processResults: function (data, page) return [ id: 0, text: 'enhancement' , id: 1, text: 'bug' ]; ,但同样的错误 【参考方案1】:

根据您最后的评论。处理结果应该返回一个具有结果键的对象。

应该是这样的:

return 
   results: [id: 1, text: 'Test']

【讨论】:

【参考方案2】:

我最近在使用 4.0.5

版本时遇到了完全相同的问题

这是从 4.0.6

版本开始解决的组件中的一个已知错误

来自 Github 官方仓库:

修复 AJAX 数据源错误#4356

更新我的本地版本的 select2 组件解决了这个问题。

【讨论】:

【参考方案3】:

我有这个工作 select2,我昨天实现了这个,它可能会对你有所帮助。

        select2_common('.accounts','Account & Description');
        function select2_common(selector,placeholder)
        
            $(selector).select2(
                minimumInputLength:2,
                placeholder:placeholder,
                ajax: 
                    url: "your_url_here",
                    dataType: "json",
                    delay: 200,
                    data: function (params) 
                        return 
                        q: params.term, // search term
                        page: params.page
                    ;
                ,
                processResults: function (data) 
                    // console.log(data);
                    return 
                        results: $.map(data, function(obj) 
                            if(obj.id!=0)
                            // console.log(obj);
                            return  id: obj.id, text: obj.name ;
                        
                            else
                                return id: obj.id, text: obj.name
                        )
                    ;

                ,
                cache: true
            ,
            debug:false
        );
    


//And your result should be in this form, from your method....
//I am using laravel php framework.


public function getAccountDetail(Request $request)

    $q = $request->input('q');
    $result=[];
    if (isset($q) && $q != '') 
            /*----------  Search by account code or title  ----------*/
        $data = DB::table('acc_accounts')->select('acc_id','acc_code','acc_title')
        ->where('acc_code', 'like', '%' . $q . '%')
        ->orWhere('acc_title', 'like', '%' . $q . '%')
        ->limit(10)->orderBy('acc_code')->get();
          foreach ($data as $key => $value) 
            $new1 = array('id' => $value->acc_id, 'name' => $value->acc_code.' ('.$value->acc_title.')' );
            array_push($result,$new1);
          
        print(json_encode($result));
    

【讨论】:

以上是关于选择2“无法加载ajax结果”的主要内容,如果未能解决你的问题,请参考以下文章

无法加载JIT编译器(CLR.DLL):文件可能丢失或损坏,请重新检查或重新安装,请问这个问题怎么解决!

Eclipse 找不到或无法加载主类

Elementelementui的Cascader 级联选择器,在懒加载的时候数据无法回显的解决方案

VirtualBox 下USB 设备加载的步骤及无法加载的解决办法

VirtualBox 下USB 设备加载的步骤及无法加载的解决办法

如果在重新加载期间触摸单元格,则重新加载后无法选择 UICollectionView 单元格