以角度Js显示数据的有效JSON


Valid JSON to display data in angularJs

我想使用AngularJs在我的网站中显示数据(json(。 这是我所做的:
在 phpmyAdmin 中创建数据库。
创建一个包含 2 行、主题和正文的表格。我应该创建一个 id 吗?
在使用PHP和angular之后,我得到了这样的JSON:

[{
    "0":"Soheil","subject":"Soheil",
    "1":"Sadeghbayan","body":"Sadeghbayan"}
    ,{"0":"","subject":"","1":"","body":""}
    ,{"0":"","subject":"","1":"","body":""}
    ,{"0":"dasdasd","subject":"dasdasd","1":"qe","body":"qe"}
    ,{"0":"Hello","subject":"Hello","1":"This is chandler !","body":"This is chandler !"}
    ,{"0":"","subject":"","1":"","body":""},
    {"0":"Something new in website","subject":"Something new in website","1":"oh Awsome !","body":"oh Awsome !"
}]

我认为这是无效的 JSON,因为当我用我编写的自定义 JSON 替换它时,它可以工作.

Json 有效

{
    "fruits": [
        {
            "id": "1",
            "name": "Apple"
        },
        {
            "id": "2",
            "name": "Orange"
        }
    ]
}  

AngularJS

var fruitsApp = angular.module('fruitsApp', []);
fruitsApp.factory('fruitsFactory', function($http) {
    return {
        getFruitsAsync: function(callback) {
            $http.get('fruits.json').success(callback);
        }
    };
});
fruitsApp.controller('fruitsController', function($scope, fruitsFactory) {
    fruitsFactory.getFruitsAsync(function(results) {
        console.log('fruitsController async returned value');
        $scope.fruits = results.fruits;
    });
});

目录

<ul>
            <li ng-repeat="fruit in fruits">
                {{fruit.subject}} is {{fruit.body}}
            </li>
</ul>  

.php

    include('config.php');

$data = json_decode(file_get_contents("php://input"));
$subject = mysql_real_escape_string($data->subject);
$body = mysql_real_escape_string($data->body);
mysql_select_db("angular") or die(mysql_error());
mysql_query("INSERT INTO newstory (subject,body) VALUES ('$subject', '$body')");
Print "Your information has been successfully added to the database.";

$query = "SELECT * FROM newstory";
$result = mysql_query($query);
$arr = array();
while ($row = mysql_fetch_array($result)) {
    $subject = $row['subject'];
    $body = $row['body'];
    $arr[] = $row;
}
echo json_encode($arr);

知道吗?提前感谢

您的 JSON 是有效的。有关 JSON 的信息,请参阅此处,并参阅此处以检查/验证 JSON 对象。

从 $http.get/数据库数据返回的数据没有 fruits 属性,您希望在设置$scope.fruits时这样做(以下代码片段取自您的代码(:

 $scope.fruits = results.fruits;

$http.get 调用返回的数据的结构与示例数据的格式不同。

这是您的 $http.get/数据库数据(为了简洁起见,我缩短了它(:

[
{
    "0": "Soheil",
    "1": "Sadeghbayan",
    "subject": "Soheil",
    "body": "Sadeghbayan"
},
{
    "0": "Hello",
    "1": "This is chandler !",
    "subject": "Hello",
    "body": "This is chandler !"
},
{
    "0": "",
    "1": "",
    "subject": "",
    "body": ""
}
]

这是您的示例/模拟数据:

{
"fruits": [
    {
        "id": "1",
        "name": "Apple"
    },
    {
        "id": "2",
        "name": "Orange"
    }
]
}

前者是带有键的对象数组:01subjectbody。后者是一个带有键的对象:fruits .

它们都是具有不同对象结构的有效 JSON 对象。但是,您希望有一个没有属性的fruits属性。此外,您的 HTML/UI 可能期望数据格式类似于模拟数据中的格式。所以也要检查一下。