#javascript #php #angularjs #angular-ui-bootstrap
#javascript #php #angularjs #angular-ui-bootstrap
Вопрос:
Не удается получить данные из файла PHP.
php
require 'dbconnect.php';
$array_data = array();
$query = "SELECT * FROM user";
$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 ""
}
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.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 вот так.data = [{..}] это работает, но сейчас я просто пытаюсь извлечь данные из php-файла, который не работает, и получаю пустую таблицу. Может ли кто-нибудь помочь мне понять, чего здесь не хватает? Я очень новичок в AngularJS.
Комментарии:
1. «попытка извлечь данные из php» — нет, вы извлекаете данные из некоторого json
2. можете ли вы показать нам, как данные возвращаются из файла php. Я бы предположил, что это не проблема Angular.
3. @defaultcheckbox Извините, но я не получил ваш вопрос. Я добавил свой php-код. И да, я пробовал json-файл, который содержит статические данные json, но с этим также возникает такая же проблема
Ответ №1:
Попробуйте это…
.service('tableService', ['$http', function($http){
this.data = $http.get("yourphpfile.php");
}])
затем
.controller('tableCtrl', function ($filter, $sce, ngTableParams, tableService) {
this.tableEdit = {};
tableService.data.then(initNgTable);
function initNgTable(data) {
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()));
}
});
}
})
Надеюсь, это вам поможет!!
Комментарии:
1. Вы отлаживали? Где вы увидели проблему?
2. Пользователь7 .. можете ли вы просто показать нам формат json? или, может быть, выполнение плунжера с фиктивным json. Я не думаю, что у нас достаточно информации, чтобы выяснить, что не так.