2017-02-15 19 views
1

私のアプリケーションをangularJSからangular2に変更しようとしています。私はajax POSTコールで立ち往生しています。 angular2でAngular2とjQuery Ajax POST呼び出しtransofrmRequest

return $.ajax({ 
     url: "http://www.url.com", 
     crossDomain: true, 
     contentType: 'application/x-www-form-urlencoded; charset=UTF-8', 
     method: 'POST', 
     transformRequest: function (obj) { 
      var str = []; 
      for (var p in obj) 
       str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 
      return str.join("&"); 
     }, 
     data: user 
    }); 

私はtransformRequest機能を使用することはできませんので、質問はこのコードの断片を変更する方法である:

transformRequest: function (obj) { 
     var str = []; 
     for (var p in obj) 
      str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 
     return str.join("&"); 
    } 

それはangular2で動作させるには?

+0

'transformRequest'関数が何を行い、' obj'に何が含まれているのか説明できますか? – AngularChef

+1

[なぜAngular 2 HTTPクライアントを使用しないのですか?](https://angular.io/docs/ts/latest/guide/server-communication.html) – Adam

答えて

0

jQuery ajaxのtransformRequestは、リクエストパラメータを特定のオブジェクトに変換するために使用されていると思います。

Angular2には、httpサービスコール内のリクエストを変更する機能はありません。代わりに、私があなたがすることをお勧めするのは、外部関数で要求を作成し、http呼び出しでそのオブジェクトを使用することです。

var headers = new Headers(); 
 
headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
 
headers.append('Accept', "*/*"); 
 

 
let options = new RequestOptions(); 
 
options.headers = headers; 
 
http.post('http://www.url.com', requestObject,options).subscribe(...);

ここrequestObject形質オブジェクトです。