/ / cómo lanzar una excepción de php al servicio angular $ http - javascript, php, angularjs

cómo lanzar una excepción de php al servicio angular $ http - javascript, php, angularjs

Estoy trabajando en un blog en angularJS y uso php para generar un json con datos de una base de datos. Mi función angular "obtener artículo" se ve así

$scope.getDetail = function() {
$http.get("php/blogGetArticle.php?id=2").success(function(json) {
$scope.jsonDetail = json;
alert("ok");
}).error(function() {
alert("error");
});
};

y mi php "blogGetArticle.php" se ve así.

<?php
$id = $_GET["id"];

$dbhost = "localhost";
$dbport = "5432";
$dbname = "pd";
$dbuser = "postgres";
$dbpass = "123";
$connect = pg_connect("host=" . $dbhost . " port=" . $dbport . " dbname=" . $dbname . " user=" . $dbuser . " password=" . $dbpass);
if(!$connect)
die("error 0"); // connect error

$query = "SELECT * FROM blog WHERE id=" . $id;
$result = pg_query($connect, $query);
if(!$result)
die("error 1"); // query error

$row = pg_fetch_row($result);
$json = "{";
$json .= ""id":"" . addslashes($row[0]) . "",";
$json .= ""title":"" . addslashes($row[1]) . "",";
$json .= ""message":"" . addslashes($row[2]) . "",";
$json .= ""category":"" . addslashes($row[4]) . """;
$json .= "}";

echo $json;
?>

Ahora lo que trato de hacer es tratar de hacer el ángulofunción llevar a la rama .error cuando llamo algo dentro de php .. No sé cómo explicar bien. Por ejemplo, cuando tengo en php una identificación que es inferior a 10, quiero que la función angular lance una excepción, pero quiero hacerlo desde un archivo php para lanzar esa excepción a la función angular.

¡Gracias, Daniel!

EDITAR: entonces, ¿cómo lanzo un error 4xx o 5xx?

Respuestas

2 para la respuesta № 1

PHP:

try {
} catch (Exception $e) {
header("HTTP/1.1 500 Internal Server Error");
echo "{"data": "Exception occurred: ".$e->getMessage().""}";
}

AngularJS

        , function(error) {
$log.error("Error message: "+error.data);
});

1 para la respuesta № 2

Puedes hacer como

  if(!$connect)
// or may be code 500
header("HTTP/1.0 404 Not Found");
exit;

$query = "SELECT * FROM blog WHERE id=" . $id;
$result = pg_query($connect, $query);
if(!$result)
header("HTTP/1.0 404 Not Found");
exit;

Te aconsejo que pruebes http://us.php.net/manual/en/function.json-encode.php sin más preámbulos :)

Adiós


-1 para la respuesta № 3

¿No podrías devolver a json con un formato diferente?

if(!$result){
$json = "{";
$json .= ""error":"failed loading data",";
$json .= "}";
}else{
$row = pg_fetch_row($result);
$json = "{";
$json .= ""id":"" . addslashes($row[0]) . "",";
$json .= ""title":"" . addslashes($row[1]) . "",";
$json .= ""message":"" . addslashes($row[2]) . "",";
$json .= ""category":"" . addslashes($row[4]) . """;
$json .= "}";
}
echo $json;

Luego, en detección angular, si existe un error en json, puede planificar múltiples errores frente a procesos de llamadas de resultados de estado.

jsonObj.hasOwnProperty("error")