javascript - Select2 AJAX 不起作用

标签 javascript ajax jquery-select2 ui-select2

这是网络方法,我之前用它来做另一件事,并且它有效:

[WebMethod]
public static string GetTests()
{
    return GetData().GetXml();
}

public static DataSet GetData()
{
    DataSet ds = new DataSet();
    BusinessLayer.StudentsController oStudent = new BusinessLayer.StudentsController();
    oStudent.Action = "page";
    oStudent.PageIndex = 0;
    oStudent.PageSize = int.Parse(System.Configuration.ConfigurationManager.AppSettings["PageSize"].ToString());
    DataTable dt1 = oStudent.Select();
    DataTable dt2 = dt1.Copy();
    dt2.TableName = "Students";
    ds.Tables.Add(dt2);
    DataTable dt = new DataTable("PageCount");
    dt.Columns.Add("PageCount");
    dt.Rows.Add();
    dt.Rows[0][0] = oStudent.PageCount;
    ds.Tables.Add(dt);
    return ds;
}

JavaScript:

$('#selectDynamic1').select2({
    placeholder: "Search for a movie",
    minimumInputLength: 1,
    multiple: true,
    ajax: { 
        url: "Default.aspx/GetTests",
        type: 'POST',
        params: {
            contentType: 'application/json; charset=utf-8'
        },
        dataType: 'json',
        data: function (term, page) {
            return JSON.stringify({ q: term, page_limit: 10 });
        },
        results: function (data) {
            return {results: data};
        },
    },
    formatResult: formatResult,
    formatSelection: formatSelection,
    /*initSelection: function(element, callback) {
        var data = [];
        $(element.val().split(",")).each(function(i) {
            var item = this.split(':');
            data.push({
                id: item[0],
                title: item[1]
            });
        });
        //$(element).val('');
        callback(data);
    }*/
});


function formatResult(node) {
   alert('');
   return '<div>' + node.id + '</div>';
};

function formatSelection(node) {
    alert('');
    return node.id;
};

请帮忙,GetTests 甚至没有触发,我想让学生通过 SQL 然后填充 select2。

最佳答案

首先,您应该将 HTTP 谓词更改为 GET,因为您没有将数据发送到服务器,而是希望从中获取数据:

ajax: {
    ...
    type: 'GET',
    ...
}

其次,您期望从服务器获得 JSON,但在 GetData 方法中,您正在创建一个 XML 文档 - 至少代码传达了这一点。这可能是您的代码无法工作的原因之一。

关于javascript - Select2 AJAX 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28263248/

相关文章:

javascript - javascript中的正则表达式/斜杠是什么意思

javascript - 在客户端 Mocha 单元测试期间使用外部类

javascript - 仅当高于特定 div 时才调用函数

javascript - 如何在进入某个特定功能时重复进行ajax调用并中止所有尚未完成的先前调用?

jquery - 限制 select2 结果

javascript - <dom-repeat> 中的 <dom-if> 不会在项目更改时调用方法

javascript - jQuery ajax 的 URL 无效

javascript - 通过 POST 方法将 Javascript 动态生成的具有复杂结构的表单提交到 PHP 脚本

javascript - 使用 Select2 Ajax 填充选择选项

javascript - 如何将参数附加到 Select2 中的 ajax 请求?