Я новичок в AngularJS. Я работаю над проектом, в котором приложение отображает контент из MYSQL (фиктивная таблица с данными рейса, которая содержит столбцы «Авиакомпании», «Вылет», «Прибытие», «Длительность и цена») в таблицу HTML с использованием PHP и AngualarJS. Я написал код для AngularJs и PHP. Теперь, когда я пытаюсь отобразить полученные данные в html, я не могу этого сделать (я попытался напрямую получить доступ к моему файлу PHP и отобразил данные в форме JSON). Пожалуйста, посмотрите мой HTML (flight.html) JAVASCRIPT / AngularJS (Авиабилеты.js) и код PHP (полеты.php):
<!DOCTYPE html> <html ng-app="mymodule"> <head> <title>Flights</title> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.js"></script> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="Flights.js" type="text/javascript"></script> </head> <body ng-controller="myCtrl"> <table> <thead> <tr> <th>Airlines</th> <th>Departure</th> <th>Arrival</th> <th>Duration</th> <th>Price</th> </tr> </thead> <tbody> <tr ng-repeat = "flights in response"> <td>{{flights.Airlines}}</td> <td>{{flights.departure}}</td> <td>{{flights.Arrival}}</td> <td>{{flights.Duration}}</td> <td>{{flights.Price}}</td> </tr> </tbody> </table> </body> </html>
var response; var app = angular.module('mymodule', []); app.controller('myCtrl', function($scope, $http) { $http.get("Flights.php") .success(function(response) { //$scope.myWelcome = response; //$scope.myWelcome = response.data; $scope.response = response.data; console.log(response); }) .error(function() { $scope.response = "error in fetching data"; }); });
<?php $conn = mysqli_connect("localhost","","",'flight_details'); $data = array(); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } else { $sql = "select * from flights"; $result = $conn->query($sql); if($result->num_rows > 0) { while ($row = $result->fetch_array()) { $data[] = $row; } $res_final = json_encode($data); echo $res_final; } else { echo"0 results"; } $conn->close(); } ?>
более того, когда я вижу консоль, я могу найти объекты (элементы массива) как Array [6] 0: Object1: Object2: Object3: Object4: Object5: Objectlength: 6__proto__: Array [0] К этому я знаю, что данные были переданы на javascript, но кодом Angularjs / javascript не подходит. Поэтому, пожалуйста, помогите мне с этим, и спасибо заранее
Ты должен сделать:
$scope.response = response;
вместо:
$scope.response = response.data;
Вот почему:
если вы используете обещание:
.then(function successCallback(response)
то вы должны сделать response.data
;
Поскольку вы используете .success
, первым аргументом уже является ваш response.data
. В этом случае вы назвали его «ответ», и это, возможно, смутило вас. При использовании .success избегать назначения аргумента как «ответа». Используйте что-то вроде:
.success(function(data) { $scope.lstWeeklyMenu = data;
Взгляните на: http://www.codelord.net/2015/05/25/dont-use-$https-success/
а также
https://www.peterbe.com/plog/promises-with- $ http
Вкратце:
Затем .then(response)
вы получаете объект ответа:
Объект ответа имеет следующие свойства:
https://docs.angularjs.org/api/ng/service/ $ http
и используя .success()
каждый из свойств ответа является аргументом:
.success (данные, статус)