加载的JSON数据没有显示在ng-table上使用$http GET



我最近开始使用angularjs,我正在尝试使用ng-table来显示爆炸搜索的结果。

直接在js脚本中添加JSON数据一切正常。不幸的是,我无法成功加载本地JSON文件使用$http

我已经搜索并发现了类似的问题,但是没有找到解决方案。

特别是从Firefox的调试器中得到这个错误:

"Error: Access to restricted URI denied

后面跟着angularjs库的路径…

代码如下:

JS:

      var app = angular.module("main", ["ngTable", 'ngTableResizableColumns']);
  app.controller("DemoCtrl", ['$scope', '$filter', '$timeout', '$http', 'NgTableParams',  function($scope, $filter, $timeout, $http, NgTableParams){
    var data = [ ];
    $http.get('/cw2144_ecoli.json')
    .success(function(data, status, $scope) {
      $scope.tableParams = new NgTableParams({
          page: 1,            // show first page
          count: 10,          // count per page
          sorting: {
              blast_evalue: 'asc'    // initial sorting
          }
      }, {
          total: data.length, // length of data
          getData: function($defer, params) {
              // use built-in angular filter
              var filteredData = params.filter() ?
                      $filter('filter')(data, params.filter()) :
                      data;
              var orderedData = params.sorting() ?
                      $filter('orderBy')(filteredData, params.orderBy()) :
                      data;
              params.total(orderedData.length); // set total for recalc pagination
              $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
          }
      });
    });
  }]);
HTML:

<button ng-click="tableParams.sorting({})" class="btn btn-default pull-right">Clear sorting</button>
<button ng-click="tableParams.filter({})" class="btn btn-default pull-right">Clear filter</button>
<p><strong>Sorting:</strong> {{tableParams.sorting()|json}}
<p><strong>Filter:</strong> {{tableParams.filter()|json}}
<table ng-table="tableParams" show-filter="true" class="table ng-table-resizable-columns table-bordered table-striped">
    <tr ng-repeat="user in $data">
        <td data-title="'Query'" sortable="'query_hdr'" filter="{ 'query_hdr': 'text' }">
            {{user.query_hdr}}
        </td>
        <td data-title="'Query Length'" sortable="'query_len'" filter="{ 'query_len': 'text' }">
            {{user.query_len}}
        </td>
    </tr>
</table>
JSON:

[
    {
        "query_hdr": "Contig1013__1",
        "query_len": 54,
        "ncbi_bp_name": "Escherichia coli O127:H6 str. E2348/69",
        "fam_seq_func": "propanediol dehydratase, large subunit, AdoCbl-dependent",
        "fam_seq_prot_id": "CAS09680.1",
        "blast_pct_id": 71.7,
        "blast_score": 86.7,
        "blast_evalue": 1e-21,
        "ncbi_tax": 574521,
        "fam_id": 1001,
        "fam_pathogenicity": "yes",
        "fam_prob": 0.9991,
        "fam_seq_aln_cov_pct": 9.94
    },
    {
        "query_hdr": "Contig1026__1",
        "query_len": 55,
        "ncbi_bp_name": "Escherichia coli O104:H4 str. 2011C-3493",
        "fam_seq_func": "putative mercuric reductase",
        "fam_seq_prot_id": "AFS72021.1",
        "blast_pct_id": 100,
        "blast_score": 111,
        "blast_evalue": 2e-30,
        "ncbi_tax": 1133852,
        "fam_id": 954,
        "fam_pathogenicity": "yes",
        "fam_prob": 0.9391,
        "fam_seq_aln_cov_pct": 9.75
    }
]

这个可能很简单的想法真的很困扰我,如果你能解决它,你会让我很开心的

我有一个类似的问题,结果证明这是一个IIS问题。我不得不将以下代码片段添加到web中。配置文件:

<system.webServer>
    <staticContent>
        <mimeMap fileExtension=".json" mimeType="application/json" />
    </staticContent>
</system.webServer>

如果您使用的是IIS,这可能会有帮助。

这个问题很简单…我只需要在index.html(或主html文件)所在的同一目录树中存储json文件(或任何其他我可以访问的文件)。出于安全原因,许多浏览器不允许访问上述目录树以外的本地文件。

感谢大家的建议和帮助

最新更新