используя содержимое переменной, возвращаемой DataTables в другой части скрипта - PullRequest
0 голосов
/ 11 октября 2019

Как я могу использовать «DeviceID» в «столбцах:» в другой части скрипта. Я перепробовал разные способы, например, перестановку некоторого кода, но независимо от того, что я делаю, я не могу заставить его работать.

Мне нужно использовать «DeviceID» в качестве переменной в

"url: 'get_wayfinder_offline_status.php', data: { DeviceID: deviceid },"

Посмотрите на << USE THIS IN PART MARKED "HERE"

$(document).ready(function() {
  var table = $('#WayFinderStatusTable').DataTable({
    ordering: false,
    paging: false,
    searching: false,
    bInfo: false,
    responsive: true,
    fixedHeader: true,
    scrollX: false,
    pageResize: true,
    ajax: {
      url: 'check_wayfinder_status.php',
      dataSrc: ''
    },
    columns: [{
        data: 'DisplayDescription',
        "sWidth": "100%"
      },
      {
        data: 'DeviceName',
        "visible": false
      },
      {
        data: 'MessageCount',
        "visible": false
      },
      {
        data: 'BoardOverride',
        "visible": false
      },
      {
        data: 'DeviceID',
        "visible": false
      }, // << USE THIS IN PART MAKED "HERE"
    ],
    rowCallback: function(row, data, dataIndex) {
      if (data.MessageCount == 2) {
        $(row).find('td:eq(0)').addClass('WayFinderStatusTableOn HeaderStatusWayfinderRedTextBlink');
      } else if (data.BoardOverride == 1) {
        $(row).find('td:eq(0)').addClass('WayFinderStatusTableOverrideOn ');
        $('#WayFinderStatusTable tbody').on('click', 'tr', function() {
          var hotelid = "<?php echo $_SESSION['_amember_user']['hotelid'];?>";
          var data = table.row(this).data();
          var deviceid = data.DeviceID;
          console.log("DEVICE ID", deviceid);
          $.ajax({
            url: 'get_wayfinder_override_status.php',
            data: {
              DeviceID: deviceid
            },
            type: 'POST',
            dataType: 'JSON',
            success: function(data) {
              var result = JSON.stringify(data);
              result = JSON.parse(result);
              if (result.length > 0) {
                console.log("BoardName", result);
                $('#EditOverrideWayfinderRecordID').val(result[0]);
                $('#EditOverrideWayfinderBoardName').val(result[1]);
                var testimage = result[2];
                console.log("TEST IMAGE", testimage);
                $('#EditOverrideWayfinderImage').val(result[2]);
                var imagepath = '../../../../conf/conf_images/override/' + hotelid + '/' + result[2];
                $("#EditOverrideWayfinderLookUpCompanyImage").attr("src", imagepath);
                $("#EditOverrideWayfinderImagePreview").attr("src", imagepath);
                $('#EditOverrideWayfinderRoomFromDate').val(result[3]);
                $('#EditOverrideWayfinderRoomFromTimeH').val(result[4]);
                $('#EditOverrideWayfinderRoomFromTimeM').val(result[5]);
                $('#EditOverrideWayfinderRoomToDate').val(result[6]);
                $('#EditOverrideWayfinderRoomToTimeH').val(result[7]);
                $('#EditOverrideWayfinderRoomToTimeM').val(result[8]);
                $('#EditOverrideWayfinderPromotionName').val(result[9]);
                $('#EditOverrideWayfinderHardwareID').val(result[10]);
                $('#edit_wayfinder_override_data_modal').modal('show');
              }
            }
          });
        });
      } else if (data.BoardOverride == "") {
        $(row).find('td:eq(0)').addClass('WayFinderStatusTableOff');
      }
    },
  });

  $(document).on('click', '.WayFinderStatusTableOff', function(e) {
    $('#wayfinder_override_data_modal').modal('show');
  });

  $(document).on('click', '.WayFinderStatusTableOn', function(e) {
    console.log("OFFLINE CLICKED");
    $.ajax({
      url: 'get_wayfinder_offline_status.php',
      data: {
        DeviceID: deviceid //<<HERE
      },
      type: 'POST',
      dataType: 'JSON',
      success: function(data) {
        var result = JSON.stringify(data);
        result = JSON.parse(result);
        if (result.length > 0) {
          // DO SOMETHING
        }
      }
    });
    $('#offline_data_modal').modal('show');
  });

  setInterval(function() {
    $('#WayFinderStatusTable').DataTable().ajax.reload();
  }, 30000);
});

Заранее большое спасибо за вашу помощь и время.

1 Ответ

1 голос
/ 11 октября 2019

Основываясь на структуре ваших таблиц данных и столбца, щелкните строку, чтобы найти идентификатор устройства, используя метод table.row( this ).data();, и затем найдите правильный индекс данных.

$('#WayFinderStatusTable').on('click', 'tr', function () {
   const data = table.row( this ).data();
   const deviceId = data[4];
   alert(deviceId + ' -> deviceid');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...