2016-03-02 2 views
0

У меня есть приложение datatables, которое отлично работает в chrome/firefox, но stateave не работает в IE11 (я пытаюсь сортировать или искать, обновлять, и это состояние не сохраняется). К сожалению, большинство моих пользователей будут иметь доступ только к интернет-исследователю. Демоверсия stateave на самом веб-сайте datatables работает для меня в IE (https://www.datatables.net/examples/basic_init/state_save.html), поэтому я знаю, что есть способ ...jQuery DataTables statesave не работает в IE 11?

Приложение представлено флягой, а библиотеки jquery и datatables хранятся локально из-за ограничений безопасности на сервере. Я включаю полный пример ниже в случае, если что-то вообще отсутствует, чтобы заставить это работать. Спасибо всем!!

<!DOCTYPE html> 
<html> 
<body> 

<script type="text/javascript" src="{{url_for('static', filename='jquery.js') }}"></script> 
<link rel="stylesheet" type="text/css" href="{{url_for('static', filename='datatables.min.css')}}"/> 
<script type="text/javascript" src="{{url_for('static', filename='datatables.min.js') }}"></script> 

<table width="100%" class="display" id="example" cellspacing="0"> 
     <thead> 
      <tr> 
       <th>Name</th> 
       <th>Location</th> 
       <th>Age</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
       <td>Haley Kennedy</td> 
       <td>Los Angeles</td> 
       <td>43</td> 
      </tr> 
      <tr> 
       <td>Michael Silva</td> 
       <td>New York</td> 
       <td>66</td> 
      </tr> 
      <tr> 
       <td>Bradley Greer</td> 
       <td>Paris</td> 
       <td>41</td> 
      </tr> 
      <tr> 
       <td>Doris Wilder</td> 
       <td>Sidney</td> 
       <td>23</td> 
      </tr> 
     </tbody> 
    </table> 

<script type=text/javascript> 
$(document).ready(function() { 
    $('#example').DataTable({ 
     stateSave: true 
    }); 
}); 
</script> 
</body> 
</html> 

ответ

0

Я обнаружил, что локальное хранилище не работало в IE при запуске с локального сервера, который я использовал. Вероятно, поэтому StateSave терпел неудачу. См.: Access Denied for localstorage in IE10

В результате я использовал stateSaveCallback и stateLoadCallback с вызовом AJAX вместо обычного состояния. URL-адреса /state_save и /state_load содержат функции для передачи данных JSON взад и вперед из файлов, сохраненных на сервере, с отдельным для каждого пользователя.

<script type=text/javascript> 
$(document).ready(function() { 
    $('#example').DataTable({ 
     stateSave: true, 
     "stateSaveCallback": function (settings, data) { 
      $.ajax({ 
       "url": "/state_save", 
       "data": data, 
       "dataType": "json", 
       "type": "POST", 
       "success": function() {} 
      }); 
     }, 
     "stateLoadCallback": function (settings) { 
      $.ajax({ 
       "url": "/state_load", 
       "async": false, 
       "dataType": "json", 
       "type": "GET", 
       "success": function (json) { 
        o = json; 
       } 
      }); 
      return o; 
     } 
    }); 
}); 
</script> 
Смежные вопросы