2013-07-15 82 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