select2 向控制器发送空参数

Posted

技术标签:

【中文标题】select2 向控制器发送空参数【英文标题】:select2 sending null params to controller 【发布时间】:2020-01-24 22:52:03 【问题描述】:

我正在尝试使用带有 ajax 调用的 select2 多选来检索数据并根据用户输入进行过滤,但是当它到达控制器时,参数为空。不幸的是(我认为因为它是自定义的 select2 api)我不能在 ajax 调用中放置一个 chrome 断点来弄乱它,但是 URL 在网络选项卡上看起来很好。现在,ajax 调用的编写方式略有不同,因为我一直在尝试不同的解决方案;都不行。

我也试过这个帖子,他说它有效,但对我来说没有骰子: jquery-select2 always sends null params in controller

$(".filter-agencies").select2(
            //data: agencies,
            ajax: 
                cache: false,
                datatype: 'JSON',
                type: 'GET',
                url: 'Home/GetFilterAgency',
                data: function (params) 
                    return q:params
                ,
                processResults: function (data) 
                    return 
                        results: data
                    
                
            ,
            placeholder: 'Agencies',
            width: '150',
            multiple: true,
            closeOnSelect: false,
            minimumInputLength: 4
            ////tags: true
        );

         $(".filter-advertisers").select2(
            //data: filterSelect,
            ajax: 
                url: 'Home/GetFilterAdvertiser',
                data: function (params) 
                    var query = 
                        search: params.term
                    
                    return query
                ,
                processResults: function (data) 
                    //advertisers = $.map(data, function (obj) 
                    //    obj =  id: i, text: obj 

                    //    i = i + 1;
                    //    return obj
                    //)
                    return 
                        results: data
                    
                
            ,
            placeholder: 'Advertisers',
            closeOnSelect: false,
            minimumInputLength: 4,
            allowClear: true,
            width: '150',
            multiple: true
        );



        [HttpGet]
        public string GetFilterAdvertiser(string query)
        
            var x = _orderedLinesProcessor.GetFilterAdvertiser();
            var i = 0;
            var dict = new Dictionary<int, string>();
            foreach (var el in x)
            
                dict.Add(i, el);
                i += 1;
            

            return JsonConvert.SerializeObject(dict);
        

【问题讨论】:

【参考方案1】:

将查询更改为在控制器中搜索:

public string GetFilterAdvertiser(string search)

【讨论】:

这是解决方案,奇怪的是它不在文档中。谢谢。

以上是关于select2 向控制器发送空参数的主要内容,如果未能解决你的问题,请参考以下文章

Yii2:Select2 不使用 jQuery 向控制器发送值

将空参数从 Ajax 发送到控制器

ASP.NET MVC 向 JS 发送类对象的问题 - JS 数组中的空对象

JavaScript 不向控制器 MVC 发送参数

控制器从 Thymeleaf 发送空对象 - Spring Boot

在 ASP.NET Core 中使用 ajax 向控制器发送数据