2013-07-15 55 views
1

我已经成功地使用WCF web服务做一些简单的操作。现在我想通过一个更复杂的使用对象jQuery的AJAX职位,但这个时候,我总是有同样的错误(错误的请求)。我已经搜索了很多,但还是没能找出问题的Javascript JSON对象和WCF web服务错误的请求

这里就是我想要做的事:

我的界面

[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":""}} 

Link 1 Link 2

我要送一个字符串,是一个JS对象的属性的JSON表示的参数名称相匹配我打电话的功能。

+0

你为什么要使用一个成功回调+'.done'的作品

码? – Johan

+0

Person的结构是什么?你也在testObj中拼写地址为“adddess”。 – Edward

+0

尝试在服务器端启用跟踪;痕迹应该说明为什么服务器正在考虑请求不好。 – carlosfigueira

回答

0

拉动大量的头发后:)终于设法得到它的工作。 基本上必须使用$的完整形式。 ajax而不是$。发布,以便指示内容类型“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") 
     } 
    }); 
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 
+0

感谢您的答复,但不幸的是它不起作用。我用新信息编辑帖子。 – Sandcar