select2 ajax 获取java后台数据 提示params is not defined

下拉框没有任何选项内容

图片说明

js代码

 /* 执行select2方法初始化 */
function select2Execute() {

    var dataList = [
                    { id: 0, text: 'enhancement' }, 
                    { id: 1, text: 'bug' }, 
                    { id: 2, text: 'duplicate' }, 
                    { id: 3, text: 'invalid' }, 
                    { id: 4, text: 'wontfix' }
                  ];

    var dataList1=[{'id':"1","text":"enhancement"}];




    $(function() {
/*本地注入方式*/
        /*$("select[name='xuewei_id']").select2({
            // $('select[id="xuewei_id"]').select2({
            // $('#xuewei_id').select2({
            // $("#selectSection").find("select.combox").select2({
            // $(".select2-selection__choice").select2();
            // $(".combox").select2({

            placeholder : "请至少选择一个人名",
            tags : true,
            createTag : function(decorated, params) {
                return null;
            },
            width : '256px',

        });*/

        //two  AJAX获取数据方式
        //$("select[name='xuewei_id']").select2({
        $(".downList2").select2({
          ajax: {
            type:'GET',
//          url: '/erzhentang/manage/forAjax.do?requestType=12.1',
            url: dataList1,
            dataType: 'json',
            delay: 250,
            data: function (params) {
              return {
                q: params.term, // search term 请求参数
                page: params.page
              };
            },
            processResults: function (data, params) {
              params.page = params.page || 1;
              /*var itemList = [];
              var arr = data.result.list
              for(item in arr){
                  itemList.push({id: item, text: arr[item]})
              }*/
              return {
                results: data.items,//itemList
                pagination: {
                  more: (params.page * 2) < data.total_count
                }
              };
            },
            cache: true
          },
          placeholder:'请选择',//默认文字提示
          language: "zh-CN",
          tags: true,//允许手动添加
          allowClear: true,//允许清空
          escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入
          minimumInputLength: 0,
          formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
          formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
        });




        function formatState(state) {
            if (!state.id) {
                return state.text;
            }
            var $state = $('<span>' + state.text + '</span>');
            return $state;
        }
        ;

        $('#sel_recommender').select2({
            placeholder : "请选择一个人名",
            templateResult : formatState,
            width : '256px'
        });

        // 通过id获取select2的text值,这里的text值可能有空格,需注意
        function getSelect2Text(obj) {
            var select2Obj = $("select[name='xuewei_id']").select2();
            return select2Obj.find("option:selected").text();
        }


        /* 获取每一个name对应的值 */
        var strXueweiId = "";
        $("[name=xuewei_id]").each(function() {
            alert("this值:" + $(this).val());
            /* 拼接每一项name的值 组合成和其它项目类似 gender那样的数组 */
            strXueweiId += $(this).val() + "-";

        });
        alert("strXueweiId:" + strXueweiId)
        $("#strXueweiId").val(strXueweiId)


    });
}
0

3个回答

看你的java程序,processResults:返回的对不对

返回的选项必须处理成以下格式
var results = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }];

https://blog.csdn.net/szhielelp/article/details/73556066

1
u012503756
bulidfer 直接 把results 写死 就是把注释去掉了 下拉框出来了 但是 选择以后保存到 后台 前端页面怎么回显选中的选项
11 个月之前 回复
u012503756
bulidfer 感谢关注我的问题 debug 就是 不执行 url 还有 刚用你的results选中后 保存到后台的是 id值 但是 怎么实现回显 每次进入 下拉框都是空的
11 个月之前 回复
caozhy
weixin_45841714 回复u012503756: 你浏览器抓包看下啊
11 个月之前 回复
u012503756
bulidfer 压根就不执行 url
11 个月之前 回复

//two AJAX获取数据方式
这个方法里的url是dataList1,这个是个json,是不是你的参数啊
好像你没写对url

1
batterMRTAN
batterMRTAN 回复u012503756: 2、后台生成json返回页面
11 个月之前 回复
batterMRTAN
batterMRTAN 回复u012503756: 1、测试时,先写个固定的json返回到页面
11 个月之前 回复
u012503756
bulidfer 谢谢 但是如何回显后台的数据呢
11 个月之前 回复

后台代码

    if("12.5_1".equals(requestType)){//查询科研检测穴位
            String jsonOM = "["+ "{\"id\":\"68\",\"body_name\":\"平和质\"},{\"id\":\"104\",\"body_name\":\"特禀质\"}]";
                    JSONArray ja = JSONArray.fromObject(jsonOM);
            OutputUtil.outPutJsonArrary(response, ja);// 用jsonArray数组
    }



js代码 url已更换 还是 不执行

     $(".downList2").select2({
          ajax: {
            type:'GET',
            url: '/erzhentang/manage/forAjax.do?requestType=12.5_1',
//          url: dataList1,
            dataType: 'json',
            delay: 250,
            data: function (params) {
              return {
                q: params.term, // search term 请求参数
                page: params.page
              };
            },

图片说明

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!