【发布时间】:2016-03-16 21:03:55
【问题描述】:
我是 stackoverflow 的新手,对编码也很陌生,所以我很感激大家的耐心。
我正在使用以下 PHP 生成 JSON 数据:
<?php
$connect = odbc_connect("database", "user", "password");
header("Access-Control-Allow-Origin: *");
# query the users table for name and surname
$query = "SELECT P1AFNR, P1AFHP, P1AFMG, P1L1DA, P1TENR, P1BEZ1, P1AKDN FROM AFP1E "
. "WHERE P1L1DA >= 20100101 and P1L1DA <= 99991231 AND P1ST01 < 68 "
. "AND P1PRKA = 'C' ORDER by P1L1DA";
# perform the query
$result = odbc_exec($connect, $query);
// fetch the data from the database
$x = 1;
$outp = "";
while (odbc_fetch_row($result)) {
if ($outp != "") {$outp .= ",";}
$outp .= '{"OrderNo":"' .odbc_result($result, 1) .'",';
$outp .= '"OrderPos":"' .odbc_result($result, 2) .'"}';
}
$outp ='{"orders":['.$outp.']}';
header("Content-Type: application/json");
echo($outp);
?>
这是我的 JavaScript 和 HTML。注意:注释掉的 Javascript 行用于测试,我将在下面解释。
var app = angular.module('XVASOrders', []);
app.controller("AS400data", ['$http', function($http) {
$http.get("AS400.php")
.then(function (res) {
this.OrderData = res.data;
// this.OrderData = {"orders":[{"OrderNo":"175782","OrderPos":"1"},{"OrderNo":"176692","OrderPos":"3"}]};
console.log(this.OrderData);
});
}]);
<html ng-app="XVASOrders">
<head>
<title>Angular - XVAS orders</title>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script>
<script src="XVASOrders.js"></script>
</head>
<body ng-controller="AS400data as AS400">
<table>
{{AS400.OrderData}} </br>
{{AS400.OrderData.orders}} </br>
{{AS400.OrderData.orders[0]}} </br>
{{AS400.OrderData.orders[1]}}
<tr ng-repeat="xord in AS400.OrderData.orders">
<td>{{ xord.OrderNo }}</td>
<td>{{ xord.OrderPos }}</td>
</tr>
</table>
</body>
</html>
如果我通过在 JavaScript 中取消注释该行来使用硬编码数据进行测试,这将非常有效。但是当我使用 PHP 生成 JSON 时,它不会。
我可以在浏览器中打开 AS400.php 文件,然后复制数据。如果我将它直接粘贴到 JavaScript 测试行中,它就可以工作。这让我认为我正在正确地生成我的数据。我也将这些数据粘贴到一个单独的 JSON 文件中,在上面使用 $http.get 而不是 AS400.php,但它不起作用。
最后,在我的 JavaScript console.log(this.OrderData);显示数据正在从 PHP 中读取。事实上,在我的 Web 浏览器的控制台中,OrderData 对于有效的测试和无效的 PHP 看起来是一样的。
我一个接一个地阅读了一个又一个帖子,我不知所措。感谢大家的帮助!
【问题讨论】:
-
您可以使用
json_encode($data),而不是手动编写json,其中$data是一个php数组。