2016-08-01 7 views
0

auf eine Schaltfläche Aufruf dieser Funktion klicken Winkelfunktionjson Daten von AngularJS zu WCF Passieren wirft 400 Bad Request Fehler

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

Die Service-Methode, wie unten

ist
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)); 

     } 

Die folgenden Fehler oder ich bekomme.

enter image description here

+0

Api erwartet Inhaltstyp Json . Versuchen Sie, den Header "Content-Type" zu entfernen. (Oder entfernen Sie diese Zeile überhaupt 'headers: {'Content-Type': 'application/x-www-form-urlencoded; charset = utf-8'},) –

+0

Danke Aleksey. Ich habe das gleiche versucht und es funktioniert nicht den gleichen Fehler. Bitte hilf mir. – Aravind

Antwort

0

sollten Sie die doppelte Daten überprüfen Sie senden. Wenn RequestFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Wrapped angegeben ist, ist das erwartete Körperformat: {"parameterName":parameterValue}. So, hier haben Sie zwei Möglichkeiten:

- Sie BodyStyle-WebMessageBodyStyle.Bare
ändern kann - Eine weitere Option ist Ihre Daten "verpackt" senden:

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

Aleksey Bitte überprüfen Sie den folgenden Fehler in meiner Konsole 'Objekt {Methode:" POST ", transformRequest: Array [1], transformResponse: Array [1], URL:" http: // localhost: 8020/DFServices.svc/InsertNewTopic "data: Object ...} data: Object InsertTopicObject: Objekt CategoryID: 3 OriginalPosterID: "11" TopicDescription:"

sample sample
sample description
" topicname:" Beispieldaten "' Bitte senden Sie mir eine Lösung für die oben genannten Daten zusammen mit dem zu Ihrer Information – Aravind

+0

können Sie mir bitte eine Lösung zur Verfügung stellen. – Aravind