2016-04-06 7 views
0

Ich habe alle meine Handlungen in CakePHP getan. Ich benutzte eine Plattform auf der Client-Seite, und jetzt entschied ich, zu Ionic/angularjs zu migrieren, aber wie ich gesehen habe, "sprechen" sie nicht miteinander. Angular verwendet Content-Type: application/json, das cakePHP nicht mit request-> data oder request-> query liest.Wie man Daten von angularjs an cakephp sendet

Ich habe einige Problemumgehungen gefunden, die ich alle Aktionen auf meiner Serverseite ändern muss. Gibt es einen anderen Weg, es ohne Änderungen zu behalten? Ich möchte es auch weiterhin in der alten Client-Version laufen lassen.

[Bearbeitet] In algularjs verwende ich $ http Service.

Antwort

0

Ich bin mir nicht sicher, ob ich dein Problem verstehe.

Wenn Sie JSON-Daten auf Ihren Server mit einer Post-Anforderung senden, können Sie Daten mit einer CakePHP Anwendung leicht zu bekommen:

jsonData = {data: [{key: 'a', value: 'b'}, {key: 'a', value: 'b'}]}; 
var req = { 
    method: 'POST', 
    url: 'http://example.com/Tests', 
    data: jsonData 
} 
$http(req); 

Dann in Ihrem Controller können Sie erhalten Daten:

class MyController extends AppController{ 
    // ... 

    public function action(){ 
     debug($this->request->data); 
     // you have your data from your angularjs app 
     // ['data' => [['key' => 'a', value => 'b'], ['key' => 'a', value => 'b']]]; 

    } 
+0

Dank @Stephane Stéphane, Ich habe eine eckige test.html mit der service.js erstellt, die ich mit Ionic verwende. Reine Winkel senden die Daten als POST und geben den Json perfekt zurück, der gleiche Dienst ($ http), der von Ionic aufgerufen wird, sendet die Daten als OPTIONS und gibt nichts zurück. Also scheint das Problem bei Ionic zu liegen. Ich weiß immer noch nicht was. –

+0

Ich kann die Daten, die im Chrome-Debugnetzwerk (in Ihrem Beispiel: Schlüssel, Wert) gesendet werden, nicht einmal beim Senden von Ionic sehen. –

0

Ich löste das Problem, indem ich den $ http-Header zu "application/x-www-form-urlencoded" änderte, ich sah dies post

body = 'cel=xxxx&pass=zczx'; 
      var req = { 
       method: 'POST', 
       url: 'http://localhost/cakefacility/usuarios/checkUsuario.json', 
       data: body, 
       headers: { 
       'Content-Type': 'application/x-www-form-urlencoded' 
       } 
      } 
      $http(req); 
0

Für das Senden von Daten von eckigen nach CakePHP-Projekt müssen Sie REST-API in CakePHP-Projekt zum Erstellen von REST-API erstellen Sie können meine gegabelten github repo folgen.

Nach API in CakePHP Projekt Erstellen Sie einfach anrufen API wie:

für Anruf-API von GET:

$http.get("<REST API URL>").then(function(response) { 
    ...... 
    ...... 
}); 

für Anruf-API von POST: