Select2 webforms在使用ajax“未找到结果”返回结果后未绑定

Posted

技术标签:

【中文标题】Select2 webforms在使用ajax“未找到结果”返回结果后未绑定【英文标题】:Select2 webforms not binding after returned result with ajax "no results found" 【发布时间】:2020-06-30 16:59:18 【问题描述】:

我正在从后端以 json 格式返回研究项目的结果,但 select2 似乎无法附加它。 没有控制台错误。 如果有人可以提供帮助,这是我的代码!谢谢。

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static string GetResults(string q)
    
        List<Select2Model> list = new List<Select2Model>();

        //geting the data to be searched into a list

        if (!(string.IsNullOrEmpty(q) || string.IsNullOrWhiteSpace(q)))
        
            list = list.Where(x => x.text.ToLower().StartsWith(q.ToLower())).ToList();
        
        return new javascriptSerializer().Serialize(new  items = list );
    

这是我的前端代码

 $("#<%=DDL_NAME.ClientID%>").select2(
        //placeholder: "Search for item",
        minimumInputLength: 3,
        ajax: 
            type: "POST",
            url: '<%= ResolveUrl("~/page.aspx/GetResults") %>',
            dataType: 'json',
            data: function (params) 
                    return  JSON.stringify( q: params.term );
            ,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            processResults: function (data) 
                return  results: data.items ;
            
        
   );

【问题讨论】:

【参考方案1】:

我找到了解决方案对于那些正在搜索此错误的人:

服务器端:

[WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static string GetResults(string q)
    
        List<Select2Model> list = new List<Select2Model>();

        //geting the data to be searched into a list
        list = (from DataRow row in _cotalog.Rows
                select new Select2Model
                
                    id = row["CODE"].ToString(),
                    text = row["LABEL"].ToString()
                ).ToList();
        if (!(string.IsNullOrEmpty(q) || string.IsNullOrWhiteSpace(q)))
        
            list = list.Where(x => x.text.ToLower().Contains(q.ToLower())).ToList();
        
        return new JavaScriptSerializer().Serialize(new  results = list, pagination = new  more = true  ); ;
    

客户端:

 $("#<%=DDL.ClientID%>").select2(
        placeholder: "Search for item",
        minimumInputLength: 3,
        ajax:
        
            type: "POST",
            dataType: 'json',
            contentType: "application/json; charset=utf-8",
            url: '<%= ResolveUrl("~/page.aspx/GetResults") %>',
            data: function (params) 
                return JSON.stringify( q: params.term );
            ,
            processResults: function (data, page) 
                //console.log(JSON.parse(data.d).results);
                return  results: JSON.parse(data.d).results ;
            
        
    );

如果您还想要模型:

public class Select2Model

    public string id  get; set; 
    public string text  get; set; 

【讨论】:

以上是关于Select2 webforms在使用ajax“未找到结果”返回结果后未绑定的主要内容,如果未能解决你的问题,请参考以下文章

Select2:使用 AJAX 未显示结果

使用 ajax 在 Select2 上未显示数据

使用 AJAX 预填充 Select2 - “未找到结果”

select2:使用ajax获取json时“文本未定义”

Select2 未通过 AJAX 获取数据

Select2 Ajax Laravel - 结果未显示