2017-03-16 11 views
0

との違いは、私は次のコードを持っているどのようなものです: "":それはこれが原因で動作していないよう

{"Body":"test","Email":"test","Name":"test"}:"" 

を返し

$http({ 
       url: config.apiUrl + 'mail/Sendmail', 
        method: 'POST', 
        data: JSON.stringify({ 
         Body: $scope.Message, 
         Email: $scope.Email, 
         Name: $scope.Name 
        }), 
        headers: { 
         'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' 
        } 
       }) 

を最後に、それは私の働く郵便配達員の呼び出しのように見えます。

私は私のデータコードを変更する場合:

data: $.param({ 
         Body: $scope.Message, 
         Email: $scope.Email, 
         Name: $scope.Name 
        }), 

私はパラメータの下でフォームデータを取得していないと私はもはや私のネットワークタブでJSONを参照してください、それは反対素晴らしい作品:

public bool SendEmail(EmailRequest email) 

なぜJSON.Stringifyは:""を私の呼び出しに追加しますか?

+0

:http://jsfiddle.net/ngkjzwm7/ – lin

+0

をサーバーがJSONとしてJSONを解析していないので、あなたは、URLエンコードされた文字列としてデータを変換する必要があります。代わりにそれをparamsのように扱います。 –

+0

@KevinBあなたは質問&回答をdownvoteしましたか?もしそうなら、理由を説明してください。 – lin

答えて

0

demo fiddleのように試してみて、'Content-Type': 'application/json'を使用してください。 JSON.stringify()はうまく動作します。コンテンツタイプは重要です。


それでもこのrunnable fiddleを試してみてくださいapplication/x-www-form-urlencoded; charset=UTF-として、それを送信する場合は

var myApp = angular.module('myApp',[]); 

myApp.controller('MyCtrl', function ($scope, $http) { 
    $scope.output = JSON.stringify({ 
     Body: 'some', 
     Email: '[email protected]', 
     Name: 'name' 
    }); 

    $http({ 
     url: 'https://jsonplaceholder.typicode.com/posts', 
     method: 'POST', 
     data: $scope.output, 
     headers: { 
     'Content-Type': 'application/json' 
     } 
    }) 
}); 

。それはdoesntの

$http({ 
     url: 'https://jsonplaceholder.typicode.com/posts', 
     method: 'POST', 
     data: { 
     Body: 'some', 
     Email: '[email protected]', 
     Name: 'name' 
     }, 
     transformRequest: function(obj) { 
      var str = []; 
      for(var p in obj) 
      str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 
      return str.join("&"); 
     }, 
     headers: { 
     'Content-Type': 'application/x-www-form-urlencoded' 
     } 
    }) 
+0

downvoterではなく、そのapplication/xヘッダーはCORS固有です。なぜSOAアプリケーションでCORSが必要なのでしょうか?それは別の問題です。残念ながら、コンテンツタイプは1つしかないようです。手動でJSON文字列を書式設定する限り、$ .paramsはその時点で使いやすくなります。 – RandomUs1r

+0

この質問は禁止されています=) – lin