スタックオーバーフローで同様の投稿をたくさん見ましたが、どちらもうまくいきませんでした。入力に基づいて都市を返す単純な 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 を source オプションに単純に渡そうとしましたが、同じ結果が得られました ( term=myinput が url に追加されました)。
多くのエントリがあるため、3 番目のオプション (ローカル データを含む配列) を使用できません。それらすべてをクライアントに保持したくありません。
では、プレフィックス パラメータを Service Method に渡すにはどうすればよいでしょうか。これは可能ですか、またはjquery uiのオートコンプリートウィジェットを使用することを選択した場合、URLが追加されたパラメーターに固執する必要がありますか?