我在 stackoverflow 上看到了一堆类似的帖子,但对我都没有用。我有简单的 AJAX ENABLED WCF 服务,它根据输入返回城市
[OperationContract]
public IEnumerable<string> GetCities(string prefix)
{
string[] cities = new[] { "New York", "Atlanta", "Los Angeles", "Las Vegas", "Arizona", "New Hampshire", "New England" };
if(!String.IsNullOrEmpty(prefix))
{
cities = cities.Where(a => a.ToLower().StartsWith(prefix.ToLower())).ToArray();
}
return cities;
}
现在我正在尝试使用 jquery ui 的自动完成来调用此方法。问题是我必须将前缀参数传递给方法调用,但是无论我尝试什么,前缀参数都会作为查询字符串附加到 url。这是我拥有的 jQuery 代码
$("input[type=text][id*=autocompleteBox]").autocomplete({
source: function (request, response) {
var dataCity = {'prefix': request.term};
$.ajax({
url: "http://localhost:1939/Cities.svc/GetCities",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(dataCity),
success: function (data) {
response($.map(data, function (item) {
return {
label: data
}
}));
}
});
},
minLength: 0
});
我知道我有 3 个选项可以调用远程数据源。第一个选项是上面的代码,但是这样我将字符串化的 json 结果附加到 url。
然后我尝试简单地将服务的 url 传递给源选项,但我得到了相同的结果( term=myinput 附加到 url )。
我不能使用第三个选项(带有本地数据的数组),因为我有很多条目,我不想将它们全部保留在客户端上。
那么如何将前缀参数传递给 Service Method 呢?这是否可能,或者如果我选择使用 jquery ui 的自动完成小部件,我必须坚持使用 url 附加参数?