从 ASP.Net 服务获取用于 select2 控件的 AJAX 结果
Posted
技术标签:
【中文标题】从 ASP.Net 服务获取用于 select2 控件的 AJAX 结果【英文标题】:Getting AJAX results from ASP.Net service for select2 control 【发布时间】:2014-08-26 01:51:19 【问题描述】:我正在尝试通过从 ASP.Net Web 服务(网络表单)中提取信息来实现 Select2 控件。我在我的服务器代码中放置了一个断点,该方法被调用并返回信息,但 select2 控件从不显示信息,并且报告了 no 控制台错误(只是服务被击中并返回)。以下是所有信息:
C# Webservice(ListVar是一个有Value和Text两个字符串属性的类):
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 方法没有被调用? (我从来没有看到警报消息) 为什么不显示信息
【问题讨论】:
您的响应是 xml 而不是 json。 它应该是任何特定的 json 格式吗? 没有特定的json格式。这取决于您的方法返回什么。在你的情况下,它可能是"ArrayOfListVar":["Value":"1","Text":"Miles McGehee","Value":"777","Text":"Miles McGehee"]
【参考方案1】:
您需要装饰您的服务方法,使其以 JSON 而不是 XML 响应
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<ListVar> SearchUsers(string searchText, string additionalFilter)
return WebUserManager.SearchWebUsers(searchText, Boolean.Parse(additionalFilter));
select2
需要一种特殊的 json 格式。响应需要是一个列表 id
和 text
值,例如 "d":["id":"1","text":"hello","id":"2","text":"world"]
【讨论】:
以上是关于从 ASP.Net 服务获取用于 select2 控件的 AJAX 结果的主要内容,如果未能解决你的问题,请参考以下文章
如何从后面的 asp.net 代码中获取 Select2 值
使用 select2 与 ajax 调用 asp.Net 服务自定义参数
使用 asp.net 从后面的代码中获取 Jquery 的 Select2 的多个选定值
从 ASP .Net Web 表单后面的代码中获取 Select2 选定值