以下は IService1 の OperationContract です。
[OperationContract]
[WebGet(UriTemplate = "/GetStates",ResponseFormat = WebMessageFormat.Json)]
List<string> GetStates();
Implementation of method GetStates in Service1 class :
public List<string> GetStates()
{
DB_MVCEntities db = new DB_MVCEntities();
// string temp = CountryName.Country;
string temp = "india";
var CountryId = (from n in db.tblCountries
where n.Country == temp
select new { n.Cid }).Single();
int ii = CountryId.Cid;
// int ii = (ObjectQuery<Int32>)CountryId;
// object oo = CountryId;
//int countryId = Convert.ToInt32(CountryId);
var StateResult = (from n in db.tblStates
where n.Cid == CountryId.Cid
select n.StateName).ToList();
List<string> aaa = new List<string>();
foreach (object o in StateResult)
{
string t = o.ToString();
aaa.Add(o.ToString());
}
return aaa;
}
上記の方法では、エンティティ フレームワークを使用してデータベースから状態リストを取得しています。ブラウザでwcfサービスを実行しているとき、正常に動作しています。次の出力が得られていることを意味します
上記のサービスの出力は次のとおりです。
["MH","AP"]
Code for consuming it in MVC3, Register.csheml file:
$(document).ready(function () {
$("#Country").change(function () {
$.ajax({
url: 'http://localhost:1264/Service1.svc/GetStates',
type: 'GET',
contentType: 'application/json; charset=utf-8',
success: function (data) {
$('#State option').remove();
$.each(data, function (index, val) {
var optionTag = $('<option></option>');
$(optionTag).text(val.toString());
$('#State').append(optionTag);
});
},
error: function () {
alert("bye..countryes.");
}
});
});
});
Country の Change イベントが発生すると、次の出力が得られます: コントロールが Success メソッドに移行しません。
成功すると、状態リストを状態ドロップダウンリストにバインドしています。
しかし、mvc3 で json データを取得できません。
bye..countryes.
What was the error?
Thanks in advance.