うーん、これについてはたくさんありますが、JSON オブジェクトを Web サービス オブジェクトに渡すことができないようです。この作業を行うのに最も近いのは、次のように ID がサービス内の文字列変数名と一致するこの例です。
var jsonData = { "ID": "hello" };
$.ajax({
url: "http://blah/blah.svc/GetPersonByID",
type: "POST",
dataType: "jsonp", // from the server
contentType: "application/json; charset=utf-8", // to the server
data: jsonData,
success: function (msg) {
alert("success " + msg.Name);
},
error: function (xhr, status, error) {
alert(xhr.status + " " + status + " " + error);
}
});
WCF サービスの場所
[OperationContract]
[Description("Returns a person by ID.")]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
Person GetPersonByID(string ID);
public Person GetPersonByID(string ID) {
Person person = new Person {
Name = ID, // "Bob",
FavoriteColor = "Red",
UserID = 1 //int.Parse(ID)
};
return person;
}
これは「成功 ID=hello」を返します。
hello だけでなく ID=hello を返すのはなぜですか?
data: JSON.stringify({ "ID": "hello" }) を使用すると、400 bad request で失敗します
Web サービス ID (文字列ではなく) の int のような他のデータ型を試みた場合、失敗した場合。
より複雑なデータ型を試みると、失敗します。
何かご意見は???どうも