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

Javascript 选择2“无法加载ajax结果”,javascript,jquery,ajax,select2,Javascript,Jquery,Ajax,Select2,很抱歉,无法找到解决方案 每当我尝试进行搜索时,select2将显示“结果无法加载” 我认为我的ajax设置是错误的 html: 2016年7月8日增补 某些更改ajax设置: dataType: 'jsonp' 到 加 type: 'GET', 现在没有“结果无法加载”的消息,也没有您上次评论的结果。处理结果应该返回一个具有结果键的对象 因此,它应该是: return { results: [{id: 1, text: 'Test'}] } 根据你最后的评论。处理结果应该返回一个具

很抱歉,无法找到解决方案

每当我尝试进行搜索时,select2将显示“结果无法加载”

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

html:

2016年7月8日增补

某些更改ajax设置:

dataType: 'jsonp'

type: 'GET',

现在没有“结果无法加载”的消息,也没有您上次评论的结果。处理结果应该返回一个具有结果键的对象

因此,它应该是:

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

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

因此,它应该是:

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

我最近在使用版本4.0.5时遇到了完全相同的问题

这是从版本4.0.6开始解决的组件中的已知错误

从Github官方存储库:

修复AJAX数据源错误4356


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

我最近在使用版本4.0.5时遇到了完全相同的问题

这是从版本4.0.6开始解决的组件中的已知错误

从Github官方存储库:

修复AJAX数据源错误4356


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

我有一个正在工作的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,我昨天已经实现了,它可能会帮助你

        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));
    }
}

当您接收单个对象时,返回的数据应该是数组od对象。好的,我这样做了:processResults:function数据,第{return[{id:0,text:'enhancement'},{id:1,text:'bug'}];}页,但是当您接收单个对象时,返回的数据应该是数组od对象。好的,我这样做了:processResults:function data,第{return[{id:0,text:'enhancement'},{id:1,text:'bug'}];}页,但是同样的错误
        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));
    }
}