Javascript AngularJs-无法从外部文件获取数据
无法从PHP文件和JSON文件获取数据 timesheet.phpJavascript AngularJs-无法从外部文件获取数据,javascript,php,angularjs,json,angular-ui-bootstrap,Javascript,Php,Angularjs,Json,Angular Ui Bootstrap,无法从PHP文件和JSON文件获取数据 timesheet.php require 'dbconnect.php'; $array_data = array(); $query = "SELECT * FROM timesheet"; $stmt = $conn->prepare($query); $stmt->execute($array_data); $result_data = $stmt->fetchAll( PDO::FETCH_ASSOC ); if( !em
require 'dbconnect.php';
$array_data = array();
$query = "SELECT * FROM timesheet";
$stmt = $conn->prepare($query);
$stmt->execute($array_data);
$result_data = $stmt->fetchAll( PDO::FETCH_ASSOC );
if( !empty($result_data) ) {
header('Content-type: application/json');
$json = json_encode($result_data);
// echo $json;
echo preg_replace("/null/", '""', $json); // replace null to ""
}
timesheet.json
[
{
"id": 1,
"date": "20th August 2016",
"day": "Sat",
"in1": "10:30",
"out1": "02:30",
"in2": "04:00",
"out2": "08:00",
"in3": "",
"out3": "",
"total_hours": "8:00",
"status": "1"
},
{
"id": 2,
"date": "20th August 2016",
"day": "Sat",
"in1": "10:30",
"out1": "02:30",
"in2": "04:00",
"out2": "08:00",
"in3": "",
"out3": "",
"total_hours": "8:00",
"status": "1"
}
...
]
controller.js
.controller('tableCtrl', function($filter, $sce, ngTableParams, tableService) {
var data = tableService.data
//Editable
this.tableEdit = new ngTableParams({
page: 1, // show first page
count: 10 // count per page
}, {
total:data.length, // length of data
getData: function($defer, params) {
$defer.resolve(data.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
})
script.js
.service('tableService', ['$http', function($http){
this.data = $http.get("data/timesheet.php")
//this.data = $http.get("data/timesheet.json")
}])
html
{{w.id}}
...
当我像这样将json数据放入service.js中时。data=[{..}]可以工作,但现在我需要从外部文件获取数据,外部文件可以是json文件或PHP文件,但它不工作,因为我得到的是空表。有人能帮我吗?我对AngularJs非常陌生尝试使用成功和错误函数作为回调函数来实现此功能:
在该页面的底部有一个JSON响应示例。首先,如果您在浏览器中请求该php文件,是否可以将其放在问题中(以查看输出)尝试使用success and error函数作为回调函数使其正常工作:
在该页面的底部有一个JSON响应示例。首先,如果您在浏览器中请求该php文件,是否可以将其放在问题中(以查看输出)我认为您正在尝试访问一个尚不存在的文件。因此,您应该对该php文件使用promise或callback,因为只有在php完成处理之后,数据才准备就绪。它与JSON一起工作,因为数据是静态的,随时可用,但是php需要从db计算数据并创建JSON响应(与JSON内容相同),但这需要时间。Http请求不会立即返回。这是一个异步调用,必须以不同的方式进行处理。()@DincaAdrian它也不能使用timesheet.json。只有当我直接在service.js中写入json数据时,它才起作用。请您提供一些示例代码,说明如何在此处使用承诺或回调?@VladimirM OK!但是你能告诉我怎么处理吗?我对此一无所知。@User7您是否关注了我附加在评论上的链接?这里有一个角度get请求的示例。它回报了一个承诺。如果你打算在你的项目中使用angular,你真的需要阅读关于这些的文档。我认为你正在试图访问一个还不存在的文件。因此,您应该对该php文件使用promise或callback,因为只有在php完成处理之后,数据才准备就绪。它与JSON一起工作,因为数据是静态的,随时可用,但是php需要从db计算数据并创建JSON响应(与JSON内容相同),但这需要时间。Http请求不会立即返回。这是一个异步调用,必须以不同的方式进行处理。()@DincaAdrian它也不能使用timesheet.json。只有当我直接在service.js中写入json数据时,它才起作用。请您提供一些示例代码,说明如何在此处使用承诺或回调?@VladimirM OK!但是你能告诉我怎么处理吗?我对此一无所知。@User7您是否关注了我附加在评论上的链接?这里有一个角度get请求的示例。它回报了一个承诺。如果您计划在项目中使用angular,您确实需要阅读有关这些的文档。
<table ng-table="tctrl.tableEdit" class="table table-striped table-vmiddle">
<tr ng-repeat="w in $data" ng-class="{ 'active': w.$edit }">
<td data-title="'ID'">
<span ng-if="!w.$edit">{{ w.id }}</span>
<div ng-if="w.$edit"><input class="form-control" type="text" ng-model="w.id" /></div>
</td>
...
</tr>
</table>