Soy nuevo en AngularJS. Estoy trabajando en un proyecto donde la aplicación muestra contenido de MYSQL (tabla ficticia con detalles de vuelo que tiene columnas de Aerolíneas, salida, Llegada, Duración y Precio) en una tabla HTML usando PHP y AngualarJS. He escrito el código para AngularJs y PHP. Ahora, cuando trato de mostrar los datos recuperados a html, no puedo hacerlo (traté de acceder a mi archivo PHP directamente, y muestra los datos en formato JSON). Consulte mi HTML (flights.html), Código JAVASCRIPT / AngularJS (Flights.js) y PHP (Flights.php):
Flights Airlines Departure Arrival Duration Price {{flights.Airlines}} {{flights.departure}} {{flights.Arrival}} {{flights.Duration}} {{flights.Price}}
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"; }); });
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(); } ?>
además cuando veo la consola puedo encontrar los objetos (elementos de la matriz) como Array [6] 0: Object1: Object2: Object3: Object4: Object5: Objectlength: 6__proto__: Array [0] Por esto soy consciente de que los datos se han pasado javascript pero por código Angularjs / javascript no es apropiado. Por lo tanto, ayúdenme con esto, y gracias de antemano
Deberías hacer:
$scope.response = response;
en lugar de:
$scope.response = response.data;
Este es el por qué:
si usas la promesa:
.then(function successCallback(response)
entonces deberías hacer response.data
;
A medida que utiliza .success
, el primer argumento ya es su response.data
. En este caso, lo llamaste ‘respuesta’ y esto puede haberte confundido. Cuando use .success evite nombrar el argumento como ‘respuesta’. Use algo como:
.success(function(data) { $scope.lstWeeklyMenu = data;
Eche un vistazo a: http://www.codelord.net/2015/05/25/dont-use-$https-success/
y
https://www.peterbe.com/plog/promises-with- $ http
En breve:
El .then(response)
obtienes el objeto de respuesta:
El objeto de respuesta tiene estas propiedades:
https://docs.angularjs.org/api/ng/service/ $ http
y usar .success()
cada una de las propiedades de respuesta es un argumento:
.success (datos, estado)