从ASP获取AJAX结果.用于select2控件的Net服务

本文关键字:控件 Net 服务 select2 用于 ASP 获取 AJAX 结果 | 更新日期: 2023-09-27 18:11:25

我正试图通过从ASP中提取信息来实现Select2控件。Net Webservice (webforms)。我在服务器代码中放置了一个断点,该方法正在被调用并返回信息,但select2控件从未显示信息,并且没有控制台错误正在被报告(只是服务被击中并返回的事实)。以下是所有信息:

c# Webservice (ListVar是一个有两个字符串属性ValueText的类):
public List<ListVar> SearchUsers(string searchText, string additionalFilter)
{
    return WebUserManager.SearchWebUsers(searchText, Boolean.Parse(additionalFilter));
}

JS

$(document).ready(function () {
    $('#O_M_aclUser_hfMain').select2({
        ajax: {
            cache: true,
            dataType: "json",
            type: "POST",
            url: 'http://localhost:54780/Services/Utilities.asmx/SearchUsers',
            data: function (term, page) {
                return {
                    searchText: term,
                    additionalFilter: $('#O_M_aclUser_hfAddFil').val()
                };
            },
            results: function (data, page) {
                alert('test1');
                return { results: data.d };
            }
        },
        formatResult: FormatResults,
        formatSelection: FormatResults,
        dropdownCssClass: 'autoCompleteSelect2',
        escapeMarkup: function (m) { return m; }
    });
});
function FormatResults(result) {
    var markup = '<div class="AutoCompleteResult" entityValue="' + result.Value + '">';
    markup += result.Text;
    markup += '</div>';
    return markup;
}
反应

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfListVar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
  <ListVar>
    <Value>1</Value>
    <Text>Miles McGehee</Text>
  </ListVar>
  <ListVar>
    <Value>777</Value>
    <Text>Miles McGehee</Text>
  </ListVar>
</ArrayOfListVar>

为什么我的JS结果ajax方法被调用?(我从来没有看到警告信息)为什么信息不显示

从ASP获取AJAX结果.用于select2控件的Net服务

您需要修饰您的服务方法,使其响应JSON而不是XML

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<ListVar> SearchUsers(string searchText, string additionalFilter)
{
    return WebUserManager.SearchWebUsers(searchText, Boolean.Parse(additionalFilter));
}

select2期望有一个特定的json格式。响应需要是idtext值列表,如{"d":[{"id":"1","text":"hello"},{"id":"2","text":"world"}]}