2016-10-12 3 views
1

Не удалось получить данные из 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

+0

Я думаю, вы пытаетесь получить доступ к файлам, которые еще не существуют. Таким образом, вы должны использовать обещание или обратный вызов для этого php-файла, потому что данные готовы только после обработки php. Он работает с JSON, потому что данные там статические, готовые в любое время, но php должен вычислить данные из db и создать ответ json (такой же, как и json-контент), но для этого требуется время. –

+0

Http-запрос не собирается возвращаться мгновенно. Это асинхронный вызов, и его нужно обрабатывать иначе, чем то, что вы делаете. (https://docs.angularjs.org/api/ng/service/$http) –

+0

@DincaAdrian Он не работает с timesheet.json. Он работает только тогда, когда я пишу json-данные непосредственно в service.js. Можете ли вы предоставить примерный код, как я могу использовать обещание или обратный вызов здесь? – DD77

ответ

0

попытаться получить эту работу с успехом и функцией ошибки как функции обратного вызова:

http://www.w3schools.com/angular/angular_http.asp

В нижней части страницы есть пример для ответа JSON. Прежде всего, если вы сделаете запрос в браузере для этого php-файла, можете ли вы поместить его здесь в вопрос (чтобы увидеть результат)

Смежные вопросы