Не удалось получить данные из PHP-файла, а также JSON файлAngularJs - не в состоянии получить данные из внешнего файла
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(!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"
}
...
]
контроллер .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()));
}
});
})
scrip t.js
.service('tableService', ['$http', function($http){
this.data = $http.get("data/timesheet.php")
//this.data = $http.get("data/timesheet.json")
}])
HTML
<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>
Когда я помещал данные JSON в service.js как this.data = [{..}] он работает, но теперь мне нужно получить данные из файла exterrnal который может быть либо файлом JSON, либо файлом PHP, но он не работает, поскольку я получаю пустую таблицу. Кто-нибудь может мне помочь, пожалуйста! Я очень новый для AngularJs
Я думаю, вы пытаетесь получить доступ к файлам, которые еще не существуют. Таким образом, вы должны использовать обещание или обратный вызов для этого php-файла, потому что данные готовы только после обработки php. Он работает с JSON, потому что данные там статические, готовые в любое время, но php должен вычислить данные из db и создать ответ json (такой же, как и json-контент), но для этого требуется время. –
Http-запрос не собирается возвращаться мгновенно. Это асинхронный вызов, и его нужно обрабатывать иначе, чем то, что вы делаете. (https://docs.angularjs.org/api/ng/service/$http) –
@DincaAdrian Он не работает с timesheet.json. Он работает только тогда, когда я пишу json-данные непосредственно в service.js. Можете ли вы предоставить примерный код, как я могу использовать обещание или обратный вызов здесь? – DD77