【问题标题】:Can't get select2.js ajax working with asp.net webform无法让 select2.js ajax 与 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 的第二次调用。

标签: asp.net ajax twitter-bootstrap-3 jquery-select2 generic-handler


【解决方案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 更改为针对隐藏输入而不是选择,并且它可以工作。
猜你喜欢
  • 2012-08-20
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
相关资源
最近更新 更多