[英]Javascript json object and wcf webservice bad request
我已經成功地使用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":""}}
根據這些文章:
我必須發送一個字符串,該字符串是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
拉了很多頭發之后:)終於設法使它起作用。 基本上必須使用$的完整形式。 阿賈克斯,而不是美元。 發布,以指示內容類型為“ 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")
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.