1

我已经成功使用 wcf webservices 做了一些简单的操作。现在我正在尝试使用 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; }
}

Chrome 控制台帖子

{"objP":{"cpostal":"Postal 1","address": "My address","zone":""}}

根据这些文章:

链接 1 链接 2

我必须发送一个字符串,它是 JS 对象的 JSON 表示,其属性与我正在调用的函数的参数名称匹配。

4

2 回答 2

0

我建议更改以下行:

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
于 2013-07-16T07:21:23.033 回答
0

在拉了很多头发之后:)终于设法让它工作了。基本上必须使用完整形式的$。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")
        }
    });
于 2013-07-16T18:27:05.310 回答