2016-08-01 55 views
0

調用上的一個按鈕該功能點擊 角函數從angularjs到WCF傳遞JSON數據被拋出400壞請求錯誤

$scope.CreateNewTopic = function() { 
      var userdata = { 
     TopicName:$scope.topicname, 
     TopicDescription: $scope.topicdescription, 
     OriginalPosterID: $scope.userid, 
     CategoryID: $scope.selectedcategory 
    }; 
     DataService.InsertTopicObject(userdata) 

服務方法如下

InsertTopicObject: function (topic) { 
      $http({ 
       method: 'POST', 
       url: connectionurl + 'InsertNewTopic', 
       headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' }, 

       data: topic 
      }) 
      .success(function (data, status, headers, config) { 
       // successcallback(data); 
       console.log(data); 
      }) 
      .error(function (data, status, headers, config) { 
       $log.warn(data, status, headers, config); 
      }) 
     } 

WCF

[OperationContract] 
     [WebInvoke(Method = "POST", UriTemplate = "/InsertNewTopic", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Wrapped)] 
     int InsertNewTopic(InsertNewTopic InsertTopicObject); 

public int InsertNewTopic(InsertNewTopic InsertTopicObject) { 

      return SqlHelper.ExecuteNonQuery(SqlConnectionString.GetConnection(), CommandType.StoredProcedure, Constants.SP_Name.ToString(), new SqlParameter("TopicName", InsertTopicObject.TopicName), new SqlParameter("TopicDescription", InsertTopicObject.TopicDescription), new SqlParameter("OriginalPosterID", InsertTopicObject.OriginalPosterID), new SqlParameter("CategoryID", InsertTopicObject.CategoryID)); 

     } 

下面的錯誤或者我得到。

enter image description here

+0

API要求的內容類型的Json 。嘗試刪除「Content-Type」標題。 (或者甚至刪除所有'header:{'Content-Type':'application/x-www-form-urlencoded; charset = utf-8'},') –

+0

謝謝阿列克謝。我試着一樣,它不工作得到相同的錯誤。請幫幫我。 – Aravind

回答

0

你應該仔細檢查您要發送的數據。當指定RequestFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Wrapped時,預期的主體格式爲:{"parameterName":parameterValue}。 所以,你這裏有兩種選擇:

- 您可以更改BodyStyleWebMessageBodyStyle.Bare
- 另一種選擇是把你的數據 「包裝」:

$http({ 
    method: 'POST', 
    url: connectionurl + 'InsertNewTopic', 
    data: { 
     'InsertTopicObject' : topic 
    } 
}) 
+0

Aleksey請在我的控制檯中檢查以下錯誤 'Object {method:「POST」,transformRequest:Array [1],transformResponse:Array [1],url:「http:// localhost:8020/DFServices.svc/InsertNewTopic 「數據:對象...} 數據:對象 InsertTopicObject:對象 類別ID:3 OriginalPosterID: 」11「 TopicDescription:」

sample sample
sample description
「 TopicName:」 樣本數據「' 請給我提供了上述數據的解決方案以及您的信息 – Aravind

+0

您能否爲我提供一個解決方案。 – Aravind