2014-04-09 36 views
0
發送

我一直在試圖從一個HTML頁面張貼JSON數據使用下面的代碼:捕捉JSON數據在C#從jQuery的

$scope.SubmitForm = function() { 
var review = new Review($scope.reviewList); 
var jsonData = JSON.stringify(review); 
console.log(jsonData); 
jQuery.ajax({ 
    type:"POST", 
    url: "Services/CafeReview.svc/DoWork", 
    data: review, 
    dataType: "json", 
    success: function (data) { 
     console.log(data.d); 
    } 

}); 
} 
} 

控制檯做列表下的數據: {「reviewListArray」: { 「項目」: 「S」, 「等級」:{ 「標籤」: 「2」, 「價值」:2}, 「建議」: 「好」},{ 「項目」: 「cvbcvb」, 「評級」 :{ 「標籤」: 「4」, 「值」:4}, 「建議」: 「壞」},{ 「項目」: 「sdfvsdvsd」, 「等級」:{ 「標籤」: 「4」,「值「:4},」suggestion「:」醜陋「}]}

但是,發佈內容是d:null。

當我們添加啓用ajax的wcf服務時,DoWork()方法默認提供。

[OperationContract] 
     public void DoWork() 
     { 
      // Add your operation implementation here 
      return; 
     } 

如何在服務器端檢索此數據?我已經被困了很長一段時間了。第一個問題顯然是d:空被張貼

+0

[OperationContract的]公共無效的DoWork使用這個類來創建類(字符串數據)//可能是字符串數據或其他.. { //在此處添加您的操作實施 return; } – csharpwinphonexaml

+0

不起作用。如果向DoWork()方法添加任何參數,將導致網絡選項卡 –

+0

中發生內部服務器錯誤請閱讀本文http://stackoverflow.com/questions/13828716/receiving-post-data-in-wcf-service – csharpwinphonexaml

回答

0

,你需要像下面

[DataContract] 
    public class reviewList 
    { 
    [DataMember] 
    public List<Review> reviewListArray{ get; set; } 
    } 

[DataContract] 
public class Review 
{ 
    [DataMember] 
    public string item { get; set; } 
    [DataMember] 
    public string suggestion { get; set; } 
    [DataMember] 
    public List<Ratting> rating{ get; set; } 
    } 

    [DataContract] 
    public class Ratting 
    { 
    [DataMember] 
    public int label{ get; set; } 
    [DataMember] 
    public int value{ get; set; } 
    } 

現在,在你的方法

[OperationContract] 
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, UriTemplate = "Review")] 
    public void DoWork(reviewList data) 
    { 
     // Add your operation implementation here 
    }