2

メソッドに問題がありますajax.reload()- 何も起こりません。私はこのJavaScriptでテストしました:

$(document).ready(function() {
    var table = $('#example').DataTable( {
        "ajax": {
            "async": false,
            "url": "arrays.txt",
            "dataSrc": function(json){return json;} // really necessary ?
        }
    } );

    $('#reload').click(function () {
        table.ajax.reload(function(data){
            console.log(data);
        }, false);
    } );
} );

arrays.txt の内容:

[
        [
      "Tiger Nixon",
      "System Architect",
      "Edinburgh",
      "5421",
      "2011/04/25",
      "$320,800"
    ],
    [
      "Garrett Winters",
      "Accountant",
      "Tokyo",
      "8422",
      "2011/07/25",
      "$170,750"
    ]
]

および html コンテンツ:

<button id="reload">reload</button>
<table id="example" class="display" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Extn.</th>
                <th>Start date</th>
                <th>Salary</th>
            </tr>
        </thead>
</table>

「あなたの」コード(dataTables.js)を

if(callback){
  var api = new _Api( settings );
  callback( api.ajax.json() );
}

それ以外の

if(callback){
  var api = new _Api( settings );
  api.one( 'draw', function(){
    callback( api.ajax.json() );
  });
}

わたしにはできる...

実際には、ボタンをもう一度クリックすると機能しますが、これは解決策ではありません。

4

1 に答える 1

0

あなたのコードは正常に動作します。

を削除async: falseしました。不要なようですが、コードはこのオプションでも機能します。

配列の配列をデータとして返すため、オプションdataSrcが必要ですが、次のように簡略化できますdataSrc: ""マニュアルから:

Ajax ソースがオブジェクトではなく表示するデータの配列を返すだけの場合は、このパラメーターを空の文字列に設定してください。

デモンストレーションについては、以下の例を参照してください。

$(document).ready(function () {
   // AJAX emulation for demonstration only
   $.mockjax({
      url: 'arrays.txt',
      responseTime: 200,
      response: function(settings){
        this.responseText = [
        [
           "Tiger Nixon",
           "System Architect",
           "Edinburgh",
           "5421",
           new Date(),
           "$320,800"
        ],
        [
          "Garrett Winters",
          "Accountant",
          "Tokyo",
          "8422",
          new Date(),
          "$170,750"
        ]
      ]
     }
   });

   var table = $('#example').DataTable({
       "ajax": {
           url: "arrays.txt",
           dataSrc: ""
       }
   });
  
   $('#reload').click(function () {
       table.ajax.reload(function(data){
           console.log(data);
       }, false);
   } );
});
<!DOCTYPE html>
<html>

<head>
  <meta charset="ISO-8859-1">

  <link href="//cdn.datatables.net/1.10.7/css/jquery.dataTables.min.css" rel="stylesheet" />
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="//cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js"></script>
  <script src="http://vitalets.github.com/x-editable/assets/mockjax/jquery.mockjax.js"></script>
  
</head>

<body>
<button id="reload">reload</button>
<table id="example" class="display" cellspacing="0" width="100%">
  <thead>
    <tr>
      <th>Name</th>
      <th>Position</th>
      <th>Office</th>
      <th>Age</th>
      <th>Start date</th>
      <th>Salary</th>
    </tr>
  </thead>

  <tfoot>
    <tr>
      <th>Name</th>
      <th>Position</th>
      <th>Office</th>
      <th>Age</th>
      <th>Start date</th>
      <th>Salary</th>
    </tr>
  </tfoot>
  <tbody>
  </tbody>
</table>
</body>
</html>

于 2015-07-14T16:15:50.050 に答える