2

我正在使用 angularJS 编写博客,我使用 php 生成包含数据库数据的 json。我的角度“获取文章”功能看起来像这样

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

我的 php 'blogGetArticle.php' 看起来像这样。

<?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;
?>

现在我尝试做的是,当我在 php 中调用某些内容时,我尝试将 angular 函数带到 .error 分支。我不知道如何解释好。例如,当我在 php 中有一个低于 10 的 id 时,我希望 angular 函数抛出异常,但我想从 php 文件中将异常抛出给 angular 函数。

谢谢你,丹尼尔!

编辑:那么我该如何抛出 4xx 或 5xx 错误?

4

3 回答 3

3

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);
        }); 
于 2015-06-13T17:39:21.700 回答
1

你可以这样做

  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;

我建议您立即尝试http://us.php.net/manual/en/function.json-encode.php :)

再见

于 2013-09-13T15:42:20.453 回答
-2

你不能用不同的格式返回 json 吗?

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;

然后在角度检测 json 中是否存在错误,然后您可以计划多个错误与处理状态结果调用。

jsonObj.hasOwnProperty("error")
于 2013-09-13T13:59:55.107 回答