2016-09-12 4 views
1

私はAngularJs(1.5)とCodeigniter rest serverを使って1つのプロジェクトに取り組んでいます。私はなぜデータタグがPHPに渡されていないのだろうか?私のコードを見せて、コメントをつけて説明しましょう。apiコールのポストメソッドでデータが渡されない

工場

factory.insert = function(tag){ 
     console.log(tag); //out put present, so problem is in http request 
     return $http({ 
      method: 'POST', 
      url: $location.protocol() + '://' + $location.host() + '/rest/api/tag/tag/', 
      headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
      data: { 
       tag: tag 
      } 
     }).then(function successCallback(response) { 
      return response.data; 
     }, function errorCallback(response) { 
      console.log('Can\'t insert tag: ' + response.data.message); 
     }); 
    }; 

PHP

public function tag_post() 
{ 
    $condition['tag'] = $this->post('tag'); 
    var_dump($condition); 
} 

var_dump $condition['tag']工場での 'タグ' null

UPDATE

小変更は私の問題を解決しています。今私のデータはこのように見え、動作します。どうして?私は、CakePHPやCodeIgniterのでは動作している場合

data: $.param({ 
    tag: tag 
}) 

UPDATE 2

同じことが起こります。だから私はそれはPHPの側の問題ではないと思う

+0

ような何かをするだろう:戻り成功前tag' –

+0

[オブジェクトのオブジェクト]は起こるので、リクエストはトラフになりますが、データベースの値はNULLです。タグの種類varは文字列です –

+0

'headers:{'Content-Type': 'multipart/form-data'}'と同じですか? – TGrif

答えて

0

データは、Angularで投稿要求をしているとき、常にパラメータを "準備/追加"するために、$ .param関数で設定する必要があります。 VueJsで例えば

data: $.param({ 
    tag: tag 
}) 

`tag`がオブジェクトであるため、データ`としてそれを渡す場合は、この

let params = new URLSearchParams(); 
params.append('firstName', this.name); 
this.$http.post(this.$apiUrl + `rest/api/User/User/` + id_user, params, {}) 
関連する問題