Угловой HTTP получить JSON не получить JSON

0

У меня есть данные JSON из базы данных:

{"пользователь": "Роб", {"пользователь": "Джон", {"пользователь": "Крис" и т.д. и т.д.

Я использую Angular, чтобы получить JSON и поместить его в таблицу HTML.

  <table>
   <tr>
    <th>Username:</th>
     </tr>
  <tr ng-repeat="x in names">
<td>{{ x.user}}</td>

Используя следующий скрипт:

 <script>
   arudate.controller('customersCtrl', function($scope, $http) {
     $http.get("sqlTest.php")
   .success(function (response) {$scope.names = response.records;});
      });
 </script>

Но я ничего не получаю, как в JSON, хотя он отображается как полученный в sqlTest.php

Может ли кто-нибудь предложить какую-либо помощь или устранить неполадки, пожалуйста?

Теги:
scope

2 ответа

0

Вы только показываете верхнюю часть таблицы html - можем ли мы предположить, что у вас есть полная структура таблицы здесь?

<table>
    <tr>
        <th>Username:</th>
    </tr>
    <tr ng-repeat="x in names">
        <td>{{ x.user}}</td>
    </tr>
</table>

Это также делает намного более четкий код, если вы используете единственную форму своих массивов для имени итератора, например "имя в именах" вместо "x в именах", и в этом случае вы получаете массив людей или пользователей и показывая их имена, поэтому я бы предложил следующее:

<table>
    <tr>
        <th>Username:</th>
    </tr>
    <tr ng-repeat="user in users">
        <td>{{user.name}}</td>
    </tr>
</table>

Я не совсем уверен, как выглядят ваши данные, но если вы получаете список пользователей, он должен быть структурирован примерно так:

[
    {
        "name": "Bob"
    },
    {
        "name": "John"
    },
    {
        "name": "Chris"
    }
]

Попробуйте сохранить свой json файл в виде текста и загрузить его из файловой системы сначала перед извлечением из источника данных/базы данных в реальном времени и сначала передать json файл через http://jsonlint.com, чтобы убедиться, что он действителен. Таким образом, вы устраняете неполадки только в своем коде, а также в случае неправильного формата данных и службы данных, которые могут или не всегда быть отзывчивыми.

0

Убедитесь, что ваш скрипт sqlTest.php устанавливает правильный ответ Content-Type в application/json. В противном случае угловой не знал бы, чтобы автоматически обрабатывать ответ. Если ваш серверный сценарий не возвращает правильные заголовки, вам может понадобиться вручную проанализировать ответ на объект javascript:

$http.get('sqlTest.php').success(function (response) {
    $scope.names = JSON.parse(response).records;
});

Также убедитесь, что ваш JSON выглядит так:

{
    "records": [
        { "user": "Bob" },
        { "user": "John" },
        { "user": "Chris" },
        ...
    ]
}

Еще одна вещь, на которую вы должны обратить внимание - это консоль панели инструментов разработчика веб-браузера для любых возможных ошибок.

  • 0
    Спасибо, но я не думаю, что это так. Код прекрасно работает для всех моих других баз данных, но не для этой.
  • 0
    Есть ли ошибки в консоли? Также вы проверили вкладку Сеть, чтобы увидеть, успешно ли выполняется запрос AJAX и возвращает ли он 200?

Ещё вопросы

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