2016-05-30 83 views
1

我正在使用ngTable動態顯示json文件中的數據並更新表。但是,我的代碼不起作用。 下面是一些代碼片段:

$http.jsonp("http://127.0.0.1:3000/sampledate.json") 
     .success(function(data) { 
      //console.log(data); 
      $scope.user = data; }); 

下面是HTML表(ngTable)的樣品:

<div ng-controller="tableController"> 
     <table ng-table="tableParams" show-filter="true" class="table table-striped" infinite-scroll-distance="3"> 
      <tr ng-repeat="user in $data"> 
       <td data-title="'Id'" sortable="'id'"> 
        {{user.id}} 
       </td> 
       <td data-title="'File Name'" sortable="'file_name'" filter="{ 'file_name': 'text' }"> 
        {{user.file_name}} 
       </td> 
       <td data-title="'Type'" sortable="'type'" filter="{ 'type': 'text' }"> 
        {{user.type}} 
       </td>  
       <td data-title="'File Date'" sortable="'file_date'" filter="{ 'file_date': 'text' }"> 
        {{user.file_date}} 
       </td>  
       <td data-title="'Hour'" sortable="'hour'" " filter="{ hour: 'number'}"> 
        {{user.hour}} 
       </td>  
       <td data-title="'Bucket'" sortable="'bucket'"> 
        {{user.bucket}} 
       </td> </tr></table></div> 

人能給我如何解決這一些想法? 或者給我一些關於完成我的任務的想法。

我的問題不是網絡問題。見下文。

請求URL:http://127.0.0.1:3000/sampledate.json 請求方法:GET 狀態代碼:200 OK(從高速緩存) 遠程地址:127.0.0.1:3000

+0

不能在靜態json文件上使用'jsonp'請求。同樣,對於'$ http.jsonp',您必須使用文檔中概述的回調字符串,不作任何變化。你還沒有提供任何回調參數。由於請求是API你控制我懷疑你想要jsonp無論如何。這是一個跨端口/跨域請求嗎? – charlietfl

+0

是的。之前它是一個跨域問題。現在,因爲我使用$ http.jsonp,它不應該再是這個問題了。我使用了$ http.get,那時出現了跨域問題。 –

+0

在服務器上實現CORS。或者使用jsonp,您需要一個服務器腳本來從文件中提取內容並將其包裝在jsonp回調函數中,並且您需要將'callback'參數添加到url – charlietfl

回答

0

只需添加一個錯誤功能,查看系統拋出的錯誤。

$http.jsonp("http://127.0.0.1:3000/sampledate.json").success(function(data, status, headers, config) { 
    //console.log(data); 
    $scope.user = data; 
}).error(function(data, status, headers, config) { 
    $scope.error = true; 
    //Here, the console.log that you want (with status, headers... your choice) 
    console.log(status) 
}); 

但我認爲你的問題是關於你的代碼的變量,而不是請願書。

+0

閱讀jsonp文檔將會看到您缺少重要部分,例如回調查詢參數。另外請注意,我不贊成使用「成功」和「錯誤」docd – charlietfl

+0

我只是修改了OP代碼。 – SnD

+0

Jsonp現在似乎工作。不知道爲什麼它沒有...謝謝! –

0

看起來這是錯誤的:

<tr ng-repeat="user in $data"> 

在這種情況下,您需要使用$scope.data = data;代替$scope.user = data;

另外,$datatr中d然後是data

更好地稱它爲$scope.users = data,所以你最終ng-repeat="user in users"

0

您檢索看起來像從jsonp呼叫單個用戶,那麼你將其存儲到$scope.user,但在HTML調用上$data重演。

如果你的目標是從你的電話讓多個用戶,然後依次通過他們,你必須改變兩兩件事:

首先,結果放入一個價值在$範圍:

$scope.users = data; 

然後遍歷它在html通過更改標籤:

<tr ng-repeat="user in users"> 

現在這應該工作,因爲它會通過$scope.users循環您在後成立呼叫正確。