Select2 错误 - 无响应

Posted

技术标签:

【中文标题】Select2 错误 - 无响应【英文标题】:Select2 errors - no response 【发布时间】:2015-08-09 16:24:29 【问题描述】:

我正在使用 Select2 在我的页面上提供动态选择功能。

这里是代码:-

$("#Spon_Index").select2(
    placeholder: "Type to select a sponsor",
    minimumInputLength: 3,
    multiple: false,
    width: 400,
    ajax: 
        url: "../control/autocomplete_sponsor.aspx",
        data: function(term) 
            return term;
        ,
        results: function(data, page) 
            alert(results);
            return 
                results: data
            
        ,
        formatResult: function(data) 
            return data.text;
        ,
        formatSelection: function(data) 
            return data.id;
        ,
        escapeMarkup: function(m) 
            return m;
        
    
);

使用 Fiddler,我可以看到我从 autocomplete_sponsor.aspx 获得了正确的返回,例如:-

["id":"12","text":"Smiths","id":"118","text":"Dr Smiths"]

但是,控件根本没有发生任何事情。它要么挂在“搜索”上,要么什么都没有……我检查了开发人员工具,但有一个错误:-

Uncaught TypeError: Cannot read property 'slice' of undefined

我查看了一些关于 SO 的其他解决方案,并尝试对我的代码进行各种重构以使其正常工作,但我现在已经正式用完了想法......希望这是我错过的非常简单的事情.

【问题讨论】:

如果您可以包含该错误的回溯,它可能会提供一些关于问题所在的洞察力。 只需删除 select2 中的 placeholder 选项并将其添加到您的 select 输入 【参考方案1】:

Select2 似乎只需要一个 javascript 对象而不是 JSON 字符串。 以下代码适用于 select2 v4.0.3,因此 results 已替换为 processResults

$("#Spon_Index").select2(
    placeholder: "Type to select a sponsor",
    minimumInputLength: 3,
    multiple: false,
    width: 400,
    ajax: 
        url: "../control/autocomplete_sponsor.aspx",
        data: function(term) 
            return term;
        ,
        processResults: function(data, page) 
            return  results: JSON.parse(data) ;
        ,
    
);

【讨论】:

【参考方案2】:

对于Uncaught TypeError: Cannot read property 'slice' of undefined 错误,我删除了select2 中的placeholder 选项并将其设置为我的select 输入。 所以代码是:

$("#Spon_Index").select2(
    minimumInputLength: 3,
    multiple: false,
    width: 400,
    ajax: 
        url: "../control/autocomplete_sponsor.aspx",
        dataType: 'json',
        data: function(term) 
            return term;
        ,
        results: function(data) 
            return 
                results: data
            
        
    
);

【讨论】:

您可以在您的选择输入中设置它,而不是在 jQuery 代码中。 <select placeholder="placeholder text"></select> 我在 react 中使用它,这意味着我没有 html 标签而是一个组件。【参考方案3】:

当我遇到此错误时,我的情况是因为即使在我到达最后一页后仍请求 ajax,通过更正我的 processResults 函数以在最后一页返回 more: false 属性来解决它:

 return 
          results: [some data from my API...],
          pagination: 
            more: false, // if all data has been returned
          ,
        

【讨论】:

【参考方案4】:

尝试删除

placeholder: "Type to select a sponsor",

【讨论】:

和去年angela.mirjalili的评论里说的一样【参考方案5】:

只为我提供及时的解决方案:https://github.com/select2/select2/issues/2950#issuecomment-70927064

...您没有返回带有关键结果的对象

所以,如果你可以修改 api(后端是你的),最简单的方法是这样发回你的数据:


    results: [
        
            id: 5,
            text: 'something'
        ,
        
            ...
        
    ]

...无论如何,在 js 端转换你的数据,基于此: https://select2.org/data-sources/ajax#transforming-response-data

...但是@Kevin Dimey 使用processResults 选项的答案对我不起作用(并且没有其他答案)

【讨论】:

【参考方案6】:

删除占位符为我解决了这个问题

【讨论】:

以上是关于Select2 错误 - 无响应的主要内容,如果未能解决你的问题,请参考以下文章

TOMCAT运行一段时间后网页无响应或连不上,TOMCAT无错误日志

SnowSql 无响应

.netcore视图跳转无响应

无响应脚本警告 - 含义和如何解决

错误码:102047主备认证地址端口连接无响应

打开程序出现microsoft windows 无响应,怎么办?