MySQL не возвращает массив в angularJS

0

Я пытаюсь получить данные, хранящиеся в таблице mySQL, с помощью PHP-скрипта. Я хочу, чтобы эти данные возвращались в виде массива, потому что я затем прокручивал его в своем приложении AngularJS и проводил различные преобразования и т.д. Я получаю данные просто отлично, но он возвращается как один элемент в массиве, т.е. Каждая строка не возвращается как отдельный элемент массива. Мой код в его нынешнем виде:

PHP Получить запрос

<?php
require 'config.php';
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = 'SELECT * FROM user_details';

$stmt = $pdo->prepare( $sql );

$stmt->execute();

$result = $stmt->fetchAll( PDO::FETCH_ASSOC );

$json = json_encode( $result );

echo $json;

Database::disconnect();


?>

Угловой контроллер

$scope.userprofiles = [];
$http.get('php/getUserDetails.php')
.success(function(data) {
    $scope.userprofiles = data;
});

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

$scope.varcheck = $scope.userprofiles.constructor === Array;

Это возвращает true. И затем я проверяю длину массива с помощью:

$scope.numRecords = $scope.userprofiles.length;

Это возвращает 0.

Если бы у кого-то были какие-то мысли, это было бы большой помощью.

У меня также есть проблема, что если "/" или "" хранится в базе данных, он выдает запрос на получение. Я предполагаю, что он уходит рано. Если бы кто-нибудь знал об этом, это было бы здорово!

Благодаря,

разъем

Теги:
arrays

1 ответ

0

Методы $ http возвращают обещание, которое нельзя повторить, поэтому вам нужно приложить результаты к переменной области через обратные вызовы:

$scope.userprofiles = []; 
$http.get('php/getUserDetails.php')
.then(function(response) {
    $scope.userprofiles = response.data;
});

Надеюсь, это может вам помочь :-)

  • 0
    Привет Винет. Спасибо за ответ. Я попробовал это и обнаружил, что это только половина работает. Это будет работать для чего-то вроде ng-repeat или filter. Однако это не сработает, если вы захотите запустить цикл for, например, так как он не распознает данные как массив. Имеет ли это смысл?
  • 0
    проверить отредактированный ответ
Показать ещё 4 комментария

Ещё вопросы

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