2016-04-25 4 views
2

Ich versuche meine Füße nass auf angularjs zu bekommen, die einen RESTful Service verbrauchen, jedoch stoße ich auf ein Problem.Mein AngularJS Client konsumiert meinen RESTful Anruf nicht

ich einen REST Aufruf haben, http://localhost:8080/application/webapi/myApp/, dass die folgende JSON zurückgibt:

{ 
    "content": "Hello World", 
    "id": 1 
    } 

Auch ich habe folgendes AngularJS Controller:

var myApp = angular.module("myModule", []) 
    .controller("Hello", function($scope, $http) { 
     $http.get('http://localhost:8080/application/webapi/myApp/'). 
     success(function(data) { 
      $scope.greeting = data; 
     }); 
}); 

Und meine index.html hat die folgende,

<div ng-controller="Hello"> 
    <p>The ID is {{greeting.id}}</p> 
    <p>The content is {{greeting.content}}</p> 
</div> 

wo die ng-app im Body-Tag definiert ist.

Aber wenn ich meine index.html auf meinem Tomcat-Server ausführen, verbraucht es nicht meinen REST-Aufruf. Stattdessen erzeugt es Leerzeichen, wo meine Bindungsausdrücke sind.

Meine index.html sieht wie folgt aus:

My First Application! 

The ID is 

The content is 

Ich bin nicht sicher, warum es nicht verbrauchen meine REST Anruf?

sollte Mein index.html sagen,

My First Application! 

The ID is 1 

The content is "Hello World" 

aber es :(nicht.

I place console.log(result.data) and console.log(result)

enter image description here

+0

Haben Sie sichergestellt, dass Ihr Server aktiv ist und Daten zurückgibt? –

+0

@PritamBanerjee Ja, tat ich. Ich habe meinen Tomcat-Server und bin auf dem Postman Rest Client und es gibt eine erfolgreiche JSON zurück. – Robben

+1

Sie können '$ scope.greeting' an ein leeres Objekt initialisieren, so dass' gruss.whatever' keinen Fehler verursacht – jpopesculian

Antwort

2

Aus dem Winkel DOC

Die $ http Legacy-Versprechen Methoden Erfolg und Fehler wurden veraltet. Verwenden Sie stattdessen die Standardmethode then. Wenn $ httpProvider.useLegacyPromiseExtensions auf false gesetzt ist, werden diese Methoden $ http/Legacy Fehler werfen.

Versuchen Sie, wie dies

$http.get('http://localhost:8080/application/webapi/myApp/'). 
then(function(result) { 
    $scope.greeting = result.data[0]; 
}); 
+0

Ich habe versucht, und ich bekomme immer noch Leerzeichen :( – Robben

+0

Jeder Fehler in der Konsole? @Robben –

+0

Nein, keine Fehler überhaupt :(Das ist es schwer zu debuggen. – Robben

1

Versuchen Sie Ihren Code ändern zu:

$http.get("http://localhost:8080/application/webapi/myApp") 
.then(function(response) { 
    $scope.greeting = response.data[0]; 
}); 

Oder:

$http({ 
    method : "GET", 
    url : "http://localhost:8080/application/webapi/myApp" 
}).then(function mySucces(response) { 
    $scope.greeting = response.data[0]; 
}, function myError(response) { 
    $scope.greeting = response.statusText; 
}); 

außerdem sicher, dass Sie die json somethinglike diesen Namen in der Rückgabetyp:

returnJson{ 
"content": "Hello World", 
"id": 1 
} 
+0

Ich habe das versucht und ich bekomme immer noch Leerzeichen :( – Robben

+0

@Robben Versuchen Sie $ scope.greeting = data.data –

+0

Ich bekomme einen Fehler, wenn ich das tue. Es sagt Daten sind nicht definiert – Robben

Verwandte Themen