JSON Media Type для запроса с AngularJS

0

Это бэкэнд 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? Спасибо за любую помощь здесь

Теги:
jersey

1 ответ

1

Измените <li ng-repeat="p in names"> на <li ng-repeat="p in persons">. Вы устанавливаете значение в объекте persons но используя names в представлении.

DEMO http://plnkr.co/edit/0aNUfTwyBJYjQjCsP1UU?p=preview

  • 0
    Ваша ссылка не работает с именами. Но на местном уровне не имеет значения, есть ли люди или имена. спасибо, может быть, одна из многих найденных ошибок
  • 0
    о, кстати после изменения, что он работает с вашей строкой JASON ... так что должно быть что-то с http.get

Ещё вопросы

Сообщество Overcoder
Наверх
Меню