Это бэкэнд Java Side с Джерси в встроенном Jetty.
@GET
@Path("/jason")
@Produces({MediaType.APPLICATION_JSON})
public MyJaxBean getMyBean() {
MyJaxBean myJB = new MyJaxBean();
myJB.add("Hello", 1);
myJB.add("World", 2);
return myJB;
}
проверяя, что с curl возвращает этот текст
{ "Человек": [{ "Имя": "Привет", "возраст": 1}, { "имя": "Мир", "возраст": 2}]}
Используя это на странице HTML
<p id="demo"></p>
<button onclick="doRequest()">REQUEST !</button>
<script>
"use strict";
function doRequest(){
var xmlhttp = new XMLHttpRequest();
var url = "http://localhost:8080/api/entry-point/jason";
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var myArr = JSON.parse(xmlhttp.responseText);
var myHTML = iterateObject(myArr);
document.getElementById("demo").innerHTML = myHTML
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
function iterateObject(myArr) {
var out = '';
myArr.person.forEach(function(p) {
out+= p.name + ',' + p.age + '<br>';
});
return out;
}
</script>
возвращает
Привет, 1 Мир, 2
Однако эта попытка с AngularJS не показывает ничего из Jason Call
<!DOCTYPE html>
<html>
<script src= "http://localhost:8080/ressources/angular.js"></script>
<body>
<h2>AngularJS doing a JSON HTTP Request</h2>
<div ng-app="myApp" ng-controller="customersCtrl">
<ul>
<li ng-repeat="p in persons">
{{ p.name + ', ' + p.age }}
</li>
</ul>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {
$http.get("http://localhost:8080/api/entry-point/jason")
.success(function (response) {$scope.persons = response.records;});
});
</script>
</body>
</html>
Замена http.get
$scope.persons = [{name:"Hello", age:1},{name:"World",age:2}]
работает.
Любая идея, что не так с медиа-типом или примером AngularJS? Спасибо за любую помощь здесь
Измените <li ng-repeat="p in names">
на <li ng-repeat="p in persons">
. Вы устанавливаете значение в объекте persons
но используя names
в представлении.