簡體   English   中英

Javascript JSON對象和WCF Web服務錯誤請求

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

根據這些文章:

鏈接1 鏈接2

我必須發送一個字符串,該字符串是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM