2016-09-12 2 views
1

Ich arbeite an einem Projekt mit AngularJs (1.5) und Codeigniter Rest Server. Ich frage mich, warum Daten-Tags nicht an PHP übergeben werden? Lassen Sie mich Ihnen meinen Code zeigen und erklären Sie ihn mit Kommentaren.Daten werden nicht in Post-Methode zu API-Aufruf übergeben

Fabrik

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'] 'tag' null

UPDATE

Kleine Änderung in der Fabrik mein Problem gelöst ist. Jetzt sehen meine Daten so aus und es funktioniert. Warum?

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

UPDATE 2

Gleiche passiert, wenn ich mit CakePHP oder Codeigniter arbeiten. Also ich denke, es ist kein PHP-Seite Problem

+0

Wenn 'tag' Objekt tun würde, so geben sie als' Daten: tag' –

+0

vor Rückkehr Erfolg [object Object] geschieht, so Anfrage geht durch, aber der Wert in der Datenbank ist NULL. Typ des Tags var ist string –

+0

Ist das gleiche mit 'headern: {'Content-Type': 'multipart/form-data'}'? – TGrif

Antwort

0

Daten müssen immer mit $ .Param -Funktion gesetzt werden, wenn Sie Post-Anfrage in Angular, so Params sind "vorbereitet/hinzugefügt".

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

Zum Beispiel in VueJs Sie so etwas wie dieses

let params = new URLSearchParams(); 
params.append('firstName', this.name); 
this.$http.post(this.$apiUrl + `rest/api/User/User/` + id_user, params, {}) 
Verwandte Themen