問題を理解する
新しい AngularJS ユーザーとして、 $http サービスを使用してサーバーにデータを送信するときに問題が発生しました。具体的には、URL エンコード形式でデータを送信しようとしたときに問題が発生しました。
解決策
この問題を解決するには、データを URL に変換する必要があります。 JSON 文字列の代わりにパラメータを使用します。 Ben Nadel はこれについて自身のブログで説明しています:
By default, the $http service will transform the outgoing request by serializing the data as JSON and then posting it with the content-type, "application/json". When we want to post the value as a FORM post, we need to change the serialization algorithm and post the data with the content-type, "application/x-www-form-urlencoded".
例
$http を使用して URL エンコードされたフォーム データを投稿する方法を示す例を次に示します:
$http({ method: 'POST', url: url, headers: {'Content-Type': 'application/x-www-form-urlencoded'}, transformRequest: function(obj) { var str = []; for(var p in obj) str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); return str.join("&"); }, data: {username: $scope.userName, password: $scope.password} }).then(function () {});
AngularJS v1.4 および後で
AngularJS v1.4 以降では、利用可能な新しいサービスを利用して同じ結果を達成できます:
$http({ method: 'POST', url: url, headers: {'Content-Type': 'application/x-www-form-urlencoded'}, transformRequest: $httpParamSerializer });
以上がAngularJS の $http サービスを使用して URL エンコードされたフォーム データを POST する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。