Javascript json对象和wcf-webservice错误请求
本文关键字:错误 请求 wcf-webservice json 对象 Javascript | 更新日期: 2023-09-27 18:22:31
我已经成功地使用wcf Web服务进行了一些简单的操作。现在我正试图使用jquery ajax post传递一个更复杂的对象,但这次我总是遇到同样的错误(错误的请求)。我已经搜索了很多,但仍然无法识别问题
以下是我要做的:
我的界面
[OperationContract(Name = "PersonAddress")]
[WebInvoke(UriTemplate = "AddPersonAddress/", Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
PersonAddress AddPersonAddress(PersonAddress objPA);
我的Javascript测试代码:
var testObj = {
cpostal: "Postal 1",
address: "My address",
zone:""
}
var objectAsJson = JSON.stringify({ objPA: testObj });
$.post('../../App_Services/DataService.svc/PersonAddress/', objectAsJson, function (data) {
alert("success");
});
PersonAddress
结构
public class PersonAddress
{
public string cpostal { get; set; }
public string address { get; set; }
public string zone { get; set; }
}
铬控制台后
{"objP":{"cpostal":"Postal 1","address": "My address","zone":""}}
根据这些文章:
链接1链路2
我必须发送一个字符串,该字符串是JS对象的JSON表示,其属性与我调用的函数的参数名称相匹配。
我建议更改以下行:
var objectAsJson = JSON.stringify({ PersonAddress: testObj });// This is adding a property "PersonAddress" to the object
至
var objectAsJson = JSON.stringify(testObj);// this is PersonAddress object itself
在拔了很多头发之后:)终于成功地让它工作了。基本上必须使用$的完整形式。ajax而不是$。post,以便指示内容类型"application/json;charset=utf-8"。现在工作时没有意识到为什么会发生这种情况。感谢所有试图帮助的人
适用于我的代码
$.ajax({
type: "POST",
url: "../../App_Services/DataService.svc/PersonAddress",
data: objectAsJson,
contentType: "application/json; charset=utf-8",
dataType: "json",
// processdata: true,
success: function (data) {
alert("ok")
}
});