无法让 select2.js ajax 与 asp.net webform 一起使用

Posted

技术标签:

【中文标题】无法让 select2.js ajax 与 asp.net webform 一起使用【英文标题】:Can't get select2.js ajax working with asp.net webform 【发布时间】:2014-09-02 15:45:04 【问题描述】:

我正在尝试让 ASP.NET 网络表单与 bootstrap 3 和 select2.js 插件一起使用。它不会返回任何错误或异常,它只是坐在那里看着我。这是页面:

<div id="divDepartmentEntry">
            <label>Enter Name:<br /></label>
            <select id="e1" style="width:300px"></select>        
</div>

这里是javascript

$(document).ready(function () 
    $("#e1").select2();
);

$("#e1").select2(
    minimumInputLength: 2,
    ajax:  
        url: "Default_handler2.ashx",
        cache: false,
        dataType: 'json',
        type: 'GET',
        data: function (term, page) 
            return 
                q: term // search term
            ;
        ,
        results: function (data, page)  
            return  results: data ;
        
    ,    
    formatResult: format,
    formatSelection: format

);

function format(item)     
    return item.tag; 

在通用处理程序内部:

    public void ProcessRequest (HttpContext context) 
    context.Response.ContentType = "text/plain";
    string result = "[\"tag\":\"Smith\",\"id\":1,\"tag\":\"Brown\",\"id\":14]";
    context.Response.Write(result);

我可以在打开的输入中输入文本,但它在 IE8(我知道,不要让我开始)或 Chrome 中什么都不做。有什么想法吗?

【问题讨论】:

尝试在 .ready 中包含对 .select2 的第二次调用。 【参考方案1】:

尝试在 .ready 中包含对 .select2 的第二次调用:

$(document).ready(function () 
    $("#e1").select2(
        minimumInputLength: 2,
        ajax:  
            url: "Default_handler2.ashx",
            cache: false,
            dataType: 'json',
            type: 'GET',
            data: function (term, page) 
                return 
                    q: term // search term
                ;
            ,
            results: function (data, page)  
                return  results: data ;
            
        ,    
        formatResult: format,
        formatSelection: format

    );
);

您的处理程序还应使用 json 内容类型进行响应:

context.Response.ContentType = "application/json";

【讨论】:

谢谢@Hanlet。这让我大部分时间都在那里。我还从准备好的文档中删除了$("#e1").select2();;令人困惑的是 select2。此外,我将 html 更改为针对隐藏输入而不是选择,并且它可以工作。

以上是关于无法让 select2.js ajax 与 asp.net webform 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Select2.js 对从 Ajax 调用返回的数据进行多选结果?

如何在 select2.js v4.0 中显示 ajax 数据?

Select2.js 错误:无法读取未定义的属性“长度”

选择后无法在 select2.js 中显示占位符

将 jQuery 用于 AJAX 与 ASP.NET Webforms [关闭]

将 select2.js 与多个选择 optgroup 和 knockoutJS 一起使用