从远程JSON文件归档Bootstrap Datatable

时间:2019-02-27 10:15:30

标签: json datatables cors

我正在尝试用远程JSON文件中的数据填充表(Bootstrap数据表)。

JSON文件位于https://ba.ekapija.com/company/tender-winner-json/103510/pobede-na-tenderima?hash=28cd4a0e334aec8f84a94f30bb340e7f

这是我使用的功能:

$(document).ready( function() {
  $('#twodotsmediatable').dataTable( {
    "data": "https://ba.ekapija.com/company/tender-winner-json/103510/pobede-na-tenderima?hash=28cd4a0e334aec8f84a94f30bb340e7f",
        "columns": [
            { "data": "tender" },
            { "data": "url" },
            { "data": "date" },
            { "data": "amount" },
            { "data": "company" },
            { "data": "address" }
        ]
  } );

  $('.dataTables_length').addClass('bs-select');
});

我也尝试过:

"ajax": "https://ba.ekapija.com/company/tender-winner-json/103510/pobede-na-tenderima?hash=28cd4a0e334aec8f84a94f30bb340e7f"

但是在两种情况下都没有运气。请帮助我找出我在哪里出错。

1 个答案:

答案 0 :(得分:0)

您应该始终使用ajax.url

$('#twodotsmediatable').dataTable( {
  ajax: {
    url: 'https://ba.ekapija....'
  },
  columns: [ .. ]
})

您无法克服浏览器中的请求阻塞,但是可以通过服务器端代理获取所需的JSON。如果您的服务器支持PHP,则proxy.php可能如下所示:

<?
echo file_get_contents($_GET['url']);
?>

通过代理获取数据:

$('#twodotsmediatable').dataTable( {
  ajax: {
    url: 'proxy.php?url=https://ba.ekapija....',
    dataSrc: function(d) {
      return d[0];
    }
  },
  columns: [ .. ]
})

NB :由于JSON似乎采用dataSrc

的形式,因此需要使用[[{ item, item, .. } ]]