Таблицы данных: тормоз с URL

1

У меня есть ситуация с таблицами данных, которые я не понимаю:

Проблема:

У меня этот rewriteRule:

Rewriterule ^table/ table.php

Итак, когда я перехожу на сайт www.site.com/table.php, все работает хорошо, но когда я перехожу на сайт www.site.com/table/, у меня есть следующее предупреждающее сообщение:

Предупреждение DataTables: table id = {tablet} - Недействительный ответ JSON. Для получения дополнительной информации об этой проблеме перейдите по адресу: http://datatables.net/tn/1

Я пошел к предлагаемому URL-адресу, но я не могу решить проблему.

Извините, но я не могу дать сайт онлайн, потому что это интранет.

Мой php-код:

$table = 'paciente';
$primaryKey = 'id';
$columns = array(
    array( 
            'db' => 'id', 
            'dt' => 0),
    array( 
            'db' => 'nombre', 
            'dt' => 1,
            'formatter' => function( $d, $row ) {
                $links='<a href="paciente/'.$row[0].'/0/">'.$row[1].'</a>';
                return $links;
        }),
    array( 'db' => 'apellidos',  'dt' => 2 ),
    array( 'db' => 'tel_mov',   'dt' => 3,
     'formatter' => function( $d, $row ) {
         $tels=$row[3];
                return $tels;
         }
     ),
     array( 'db' => 'tel_casa',   'dt' => 4,
     'formatter' => function( $d, $row ) {
         $tels2=$row[4];
                return $tels2;
         }
     ),
    array( 'db' => 'terapeuta',     'dt' => 5 ),
    array( 
            'db' => 'id', 
            'dt' => 6,
            'formatter' => function( $d, $row ) {
                $links2='<a href="print-historia.php?height=655&amp;width=800&amp;id='.$row[0].'" class=" thickbox"><img src="ima/edit.png" /></a> | <a href="?borrar=total&amp;id='.$row[0].'" onClick="return confirmSubmit()"><img src="ima/close.png" /></a>';
                return $links2;
        }),
);
require( 'libraries/ssp.class.php' );

echo json_encode(
    SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);

И javascript:

<script type="text/javascript" src="<?php echo $base; ?>js/datatables.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
        $('#tablet').DataTable({
        "language": {
            "url": "js/Spanish.json"},
        "scrollY":        "500px",
        "scrollCollapse": true,
        "pageLength": 25,
        "processing": true,
        "serverSide": true,
        "ajax": "table-load.php",
        "order": [[ 1, "asc" ]],
        "aoColumns": [
        { "sTitle": "id","bVisible": false},
        { "sTitle": "Nombre" },
        { "sTitle": "Apellidos" },
        { "sTitle": "Móbil","bSortable": false },
        { "sTitle": "Fijo","bSortable": false },
        { "sTitle": "Terapeuta","bSortable": false },
        { "sTitle": "Edición","bSortable": false,"bSearchable": false }],
        "fnDrawCallback": function() {
        tb_init('a.thickbox');           
      }
        });
    } );
    </script>

Есть идеи?? Заранее спасибо!!

  • 0
    Вы получаете правильный ответ JSON?
  • 0
    DataTables говорят, что не в предупреждении, но когда я захожу на www.site.com/table.php, это не проблема :(
Показать ещё 3 комментария
Теги:
datatables
.htaccess

2 ответа

0
Лучший ответ

Я исправляю его в параметрах javascript DataTable с полным URL-адресом в вызове ajax:

"ajax": "<?php echo $base; ?>table-load.php"

Таким образом, javascript выглядит примерно так:

<script type="text/javascript" src="<?php echo $base; ?>js/datatables.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $('#tablet').DataTable({
    "language": {
        "url": "js/Spanish.json"},
    "scrollY":        "500px",
    "scrollCollapse": true,
    "pageLength": 25,
    "processing": true,
    "serverSide": true,
    "ajax": "<?php echo $base; ?>table-load.php",
    "order": [[ 1, "asc" ]],
    "aoColumns": [
    { "sTitle": "id","bVisible": false},
    { "sTitle": "Nombre" },
    { "sTitle": "Apellidos" },
    { "sTitle": "Móbil","bSortable": false },
    { "sTitle": "Fijo","bSortable": false },
    { "sTitle": "Terapeuta","bSortable": false },
    { "sTitle": "Edición","bSortable": false,"bSearchable": false }],
    "fnDrawCallback": function() {
    tb_init('a.thickbox');           
  }
    });
} );
</script>

И php:

$table = 'paciente';
$primaryKey = 'id';
$columns = array(
    array( 
            'db' => 'id', 
            'dt' => 0),
    array( 
            'db' => 'nombre', 
            'dt' => 1,
            'formatter' => function( $d, $row ) {
                $links='<a href="../paciente/'.$row[0].'/0/">'.$row[1].'</a>';
                return $links;
        }),
    array( 'db' => 'apellidos',  'dt' => 2 ),
    array( 'db' => 'tel_mov',   'dt' => 3,
     'formatter' => function( $d, $row ) {
         $tels=$row[3];
                return $tels;
         }
     ),
     array( 'db' => 'tel_casa',   'dt' => 4,
     'formatter' => function( $d, $row ) {
         $tels2=$row[4];
                return $tels2;
         }
     ),
    array( 'db' => 'terapeuta',     'dt' => 5 ),
    array( 
            'db' => 'id', 
            'dt' => 6,
            'formatter' => function( $d, $row ) {
                $links2='<a href="../print-historia.php?height=655&amp;width=800&amp;id='.$row[0].'" class=" thickbox"><img src="ima/edit.png" /></a> | <a href="?borrar=total&amp;id='.$row[0].'" onClick="return confirmSubmit()"><img src="ima/close.png" /></a>';
                return $links2;
        }),
);
require( 'libraries/ssp.class.php' );

echo json_encode(
    SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);

Заметьте, что я положил ../ позади URL

Это сработало для меня...

0

У меня была аналогичная проблема. Проблема в том, что Datatable.js необходимо читать данные из ключа массива данных (чрезвычайно сложная информация, чтобы найти в своих документах честно).

Это означает, что вам нужно настроить свой PHP-скрипт, чтобы получить массив, который имеет эту структуру:

"success" => true|false // useful to display errors
"message" => string // explains the error (if occurred)
"data" => array // contains all your data

РЕДАКТИРОВАТЬ

Это пример массива PHP, который готов к кодированию и обработке DataTable.js. Обратите внимание на данные массива "data": DataTable.js будет искать элементы для отображения в этом файле jsonResponse.data.

<?php

// data fetched from database
$fromDatabase = [
    'example',
    'test',
    'foo',
    'bar'
];

$response = [

    'success' => true,
    'message' => '',
    'data' => $fromDatabase
];

echo json_encode($response);
?>
  • 0
    Упс, извините, но я не очень программист PHP :( Можете ли вы объяснить мне более подробно? спасибо !!!
  • 0
    проверь мое редактирование ..
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню