嗯,这里有很多关于此的内容,但我似乎无法将 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”。
为什么它返回 ID=hello,而不仅仅是 hello?
如果我使用 data: JSON.stringify({ "ID": "hello" }) 它会失败并出现 400 bad request
如果我尝试任何其他数据类型,例如 web 服务 ID 的 int(而不是字符串),如果失败。
如果我尝试任何更复杂的数据类型,它会失败。
有什么想法吗???谢谢