我在stackoverflow上看到了一堆類似的帖子,但都不適用於我。我有簡單的支持AJAX的WCF服務,基於輸入如何將JSON數據傳遞給WCF方法設置jquery自動完成源時
[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用戶界面的自動完成這個方法的調用,它返回城市。問題是我必須將前綴參數傳遞給方法調用,但無論我嘗試前綴參數獲取附加到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)。
我不能使用第三個選項(一個數組與本地數據),因爲我有很多條目,我不想保留它們全部在客戶端。
那麼如何將前綴參數傳遞給服務方法?這是可能的,或者如果我選擇使用jquery ui的自動完成小部件,我必須堅持使用url附加參數?
嗨,感謝您的快速響應,我不能同意我應該使用GET請求獲取數據的想法。其實我在代碼中犯了一些錯誤,特別是我應該映射data.d而不是數據。我將發佈完整的代碼作爲答案。 – Michael 2012-04-12 19:03:45
Sry忘了提及,謝謝指出我沒有指定類型參數。 – Michael 2012-04-12 19:08:32