Заполнить таблицу табулятора со страницы PHP, содержащей JSON

#tabulator

#табулятор

Вопрос:

Я новичок в программировании и табуляторе. У меня есть страница PHP, на которой отображается мой результат JSON. Я просто хочу просмотреть этот результат в таблице табулятора на другой странице.

Результат JSON отформатирован следующим образом, он находится на странице под названиемproxystatus.php.

 { "0": {
    "hostid": "10610",
    "proxy_hostid": "10609",
    "host": "PIDMPRX-DEV",
    "status": "0",
    "disable_until": "0",
    "error": "",
    "available": "1",
    "errors_from": "0",
    "lastaccess": "0",
    "ipmi_authtype": "-1",
    "ipmi_privilege": "2",
    "ipmi_username": "",
    "ipmi_password": "",
    "ipmi_disable_until": "0",
    "ipmi_available": "0",
    "snmp_disable_until": "0",
    "snmp_available": "1",
    "maintenanceid": "0",
    "maintenance_status": "0",
    "maintenance_type": "0",
    "maintenance_from": "0",
    "ipmi_errors_from": "0",
    "snmp_errors_from": "0",
    "ipmi_error": "",
    "snmp_error": "",
    "jmx_disable_until": "0",
    "jmx_available": "0",
    "jmx_errors_from": "0",
    "jmx_error": "",
    "name": "0955-PIDM-PRX",
    "flags": "0",
    "templateid": "0",
    "description": "0955  Company Name",
    "tls_connect": "1",
    "tls_accept": "1",
    "tls_issuer": "",
    "tls_subject": "",
    "tls_psk_identity": "",
    "tls_psk": "",
    "proxy_address": "",
    "auto_compress": "1"
}}
  

Мой код таблицы табулятора выглядит следующим образом, он находится на странице под названиемdash.php

 var table = new Tabulator("#proxyStatus", {
    height:"100%",
    layout:"fitColumns",
    placeholder:"Gathering Proxy Status...", 
        data:'<?=$proxyStatus?>',
        columns:[
            {title:"Status", field:"status", sorter:"string", width:200},
            {title:"Available", field:"available", sorter:"number", formatter:"progress"},
            {title:"Last Access", field:"lastaccess", sorter:"string"},
            {title:"Name", field:"name", formatter:"star", align:"center", width:100},
            {title:"Maintenance Status", field:"maintenance_status", sorter:"string", sortable:false},
            {title:"Maintenance Type", field:"maintenance_type", sorter:"date", align:"center"},
            {title:"Maintenance ID", field:"maintenanceid", align:"center", formatter:"tickCross", sorter:"boolean"},
        ],
    });
  

Ответ №1:

Вы должны добавить все столбцы в массив columns или просто использовать autoColumns:true в конструкторе, как упоминалось здесь, я создал этот Jsfiddle для вашего понимания

 const table = new Tabulator("#example-table", {
  height: 205, // set height of table (in CSS or here), this enables the Virtual DOM and improves render speed dramatically (can be any valid css height value)
  data: tabledata1, //assign data to table
  layout: "fitData", //fit columns to width of table (optional)
  autoColumns: true,

});
  

Комментарии:

1. Большое вам спасибо за ответ. Я попробовал ваш код и все еще получаю ошибку. Не могли бы вы кратко объяснить, как получить доступ к данным JSON с другой страницы? В настоящее время я просто использую <?=VARIABLENAME?> однако, чтобы перенести значения на другую страницу, это просто отображается как «Массив», если я попытаюсь распечатать массив, чтобы он отображался, однако он не использует его в качестве табличных данных?

2. Другими словами, мой источник данных поступает с другой страницы, которая создает ответ json из api. Мне нужно, чтобы это был мой источник данных. Извините за мое невежество, я изучаю это на лету. 🙂

3. Вот моя страница php, которая получает ответ JSON. Я думаю, что это где моя ошибка»‘ <?php //include «pulse.php»; $proxyStatus = json_readable_encode ( pulseProxyStatus ( $uri, $authtoken ) ); $page = $_SERVER[‘PHP_SELF’]; $sec = «10»; header(«Refresh: $sec; url=$page»); ?> <script> const tableData = new Tabulator(«#proxyStatus», { data: <?=$proxyStatus?>, //assign data to table layout: «fitData», //fit columns to width of table (optional) autoColumns: true, </script>

4. Насколько я знаю, PHP работает на сервере, Javascript работает на клиенте (браузере), вам нужно отправить данные из PHP в Javascript как вызов Rest API, а затем запустить код