Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   проблема с выводом c базы (https://javascript.ru/forum/angular/53487-problema-s-vyvodom-c-bazy.html)

dennnnnnn 05.02.2015 19:04

проблема с выводом c базы
 
Доброго времени суток. Пример кода который работает:
var phonecatApp = angular.module('phonecatApp', []);

phonecatApp.controller('PhoneListCtrl', function ($scope) {
  $scope.phones = [
    {'name': 'Nexus S',
     'snippet': 'Fast just got faster with Nexus S.',
     'age': 1},
    {'name': 'Motorola XOOM™ with Wi-Fi',
     'snippet': 'The Next, Next Generation tablet.',
     'age': 2},
    {'name': 'MOTOROLA XOOM™',
     'snippet': 'The Next, Next Generation tablet.',
     'age': 3}
  ];

  $scope.orderProp = 'age';
});

Пытаюсь сделать то же самое, только данные взять с базы данных, с помощью php, select.php:
<?php


        $dbhost = "localhost"; // Имя хоста БД
        $dbusername = "root"; // Пользователь БД
        $dbpass = ""; // Пароль к базе
        $dbname = "angular_baza"; // Имя базы

        $db = mysql_connect ($dbhost,$dbusername,$dbpass);
        mysql_select_db("angular_baza",$db);

        $result = mysql_query("SELECT * FROM angular_tabel",$db);
        echo json_encode($result);

controllers.js:
var phonecatApp = angular.module('phonecatApp', []);

phonecatApp.controller('PhoneListCtrl', function ($scope, $http) {
    $http.get('select.php').success(function(data) {
        $scope.phones = {};
        $scope.phones = angular.fromJson(data);
    });
    $scope.orderProp = 'age';
});

Здесь в
$http.get('select.php').success(function(data) {
data: JSON_encode, warning...type is unsupported и т.д.
index.html:
<!DOCTYPE html>
<html lang="en" >
<head>
    <meta charset="UTF-8">
    <title></title>
    <link href="css/bootstrap.css">
    <link href="css/style.css">
    <!--<script src="js/bootstrap.js"></script>-->
    <script src="js/angular.min.js"></script>
    <script src="js/controllers.js"></script>
</head>
<body ng-app="phonecatApp" >
<ul ng-controller="PhoneListCtrl">
    <li ng-repeat="phone in phones">
        {{phone.name}}
        {{phone.price}}
        {{phone.age}}
        {{phone.snippet}}
    </li>
</ul>
</body>
</html>

В чем проблема?

Tek 05.02.2015 19:46

Выдержка из офф документации
Response transformations ($httpProvider.defaults.transformResponse and $http.defaults.transformResponse):

If XSRF prefix is detected, strip it (see Security Considerations section below).
If JSON response is detected, deserialize it using a JSON parser.


ps. angular.fromJson() - не нужен

ksa 06.02.2015 08:57

Цитата:

Сообщение от dennnnnnn (Сообщение 355261)
var phonecatApp = angular.module('phonecatApp', []);

phonecatApp.controller('PhoneListCtrl', function ($scope, $http) {
    $http.get('select.php').success(function(data) {
        $scope.phones = {};
        $scope.phones = angular.fromJson(data);
    });
    $scope.orderProp = 'age';
});

Это лучше вот так делай
var phonecatApp = angular.module('phonecatApp', []);

phonecatApp.controller('PhoneListCtrl', function ($scope, $http) {
    $scope.phones = {};
    $scope.orderProp = 'age';
    $http.get('select.php').success(function(data) {
        $scope.phones = angular.fromJson(data);
    });
});

Т.о. объект будет существовать сразу, а потом просто обновится...
Да и вообще все "явные" объявления данных удобнее делать сразу, дабы не искать потом по всему контроллеру. ;)

Shasoft 06.02.2015 19:42

$result = mysql_query("SELECT * FROM angular_tabel",$db);
    echo json_encode($result);

Возможно что-то изменилось в новых версиях PHP, но вроде $relust это идентификатор, а не массив данных. Данные нужно из идентификатора результата читать fetch (вроде бы)


Часовой пояс GMT +3, время: 17:38.