2016-08-18 13 views
0

私は、角度$リソースサービスの問題に直面しています。

いくつかのフォームデータをさまざまな方法でREST APIにヒットしようとしています。

しかし、APIを使用するたびに、私はQueryParamsまたはRequest Payloadでデータを送信することになります。

実際には、エンコードされた形式でデータを送信する必要があります。

私のコードは次のようになります。

var headers = { 
      'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' 
     }; 


var save = function (url, params, headers, successcb, successParams, errorcb, errorParams) { 
      var promise = $resource(url, null, { 
       upload: { 
        method: methodPost, 
        headers: headers 
       } 
      }).save({}, params).$promise; 

      promise.then(function (response) { 
       successcb(response.data, successParams); 
      }, function (error) { 
       errorcb(error, errorParams); 
      }); 
     }; 

私は、角のAjaxリクエストのスナップショットを添付しました。 Iはx-www-form-urlencodedで設定しても上記画像を参照

enter image description here

は、コンテンツタイプは、実際にアプリケーション/ JSONを示しています。したがって、データはFormDataの代わりにRequestPayloadに出力されます。

以下は、jQuery ajax呼び出しのもう1つのイメージです。ここで

enter image description here

、あなたは明らかに、コンテンツ・タイプはx-www-form-urlencodedでいることを見ることができますし、それが正常に動作しています。

疑問に思うのは、$ resourceは、データがRequestPayloadの形式で送信されるため、適切なヘッダーを送信していないことです。

誰かがこの問題に直面していますか?

何か助けていただければ幸いです。

ありがとうございました

答えて

0

以下のように変換要求を使用できます。

var transform = function(data) { 
     return $.param(data); 
    } 

    var headers = { 
     'Content-Type' : 'application/x-www-form-urlencoded;charset=UTF-8' 
    }; 

    var save = function(url, params, headers, successcb, successParams, errorcb, errorParams) { 
     var promise = $resource(url, null, { 
      upload : { 
       method : methodPost, 
       headers : headers, 
       transformRequest : transform 

      } 
     }).save({}, params).$promise; 

     promise.then(function(response) { 
      successcb(response.data, successParams); 
     }, function(error) { 
      errorcb(error, errorParams); 
     }); 
    }; 
0

これは$httpサービス$resoucetransformRequest方法によるものである常にapplication/jsonContent-Typeヘッダを設定するに依存しています。

これを修正するには、それを無効にするか、スペックを目的に設定する関数を使用するように変更する必要があります。ここで

良い記事:http://www.bennadel.com/blog/2615-posting-form-data-with-http-in-angularjs.htm

試してみてください。

var promise = $resource(url, null, { 
    upload: { 
     method: methodPost, 
     headers: headers, 
     transformRequest: []   
    }, 
}).save({}, params).$promise; 
+0

感謝。私は質問を投稿する前にtransformRequestを試しました。しかし、それは私のために働かなかった –

関連する問題