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表示,其属性与我调用的函数的参数名称相匹配。

Javascript json对象和wcf-webservice错误请求

我建议更改以下行:

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")
        }
    });