Nano Hash - криптовалюты, майнинг, программирование

Не могу добавить строки в свою таблицу, несмотря на хорошее форматирование Json (DataTables)

Я хочу заполнить таблицу (DataTables) запросом AJax

Мой запрос ajax возвращает Json, но невозможно заполнить таблицу, у меня есть эта ошибка:

Предупреждение DataTables: table id=dt-table — запрошен неизвестный параметр «0» для строки 1, столбца 0. Дополнительные сведения об этой ошибке см. на странице http://datatables.net/tn/4

Моя таблица:

<div>
    <div class="table-responsive">
      <table id="dt-table" class="table table-striped table-bordered">
        <thead>
          <tr>
            <th>Invoice</th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <td>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>

Мой JS:

var table = $('#dt-table').DataTable({});

$(document).on("click", ".button", function() {

    var inputVal = $(this).text();
    var selectVal = $('#select option:selected').val();

    $.post("/ajax/invoice.php", {find: inputVal, column: selectVal}).done(function(data){
      console.log(data)
      table.rows.add(data).draw();
    });

});

Ответ ajax:

[{"invoice":"AZERT"},{"invoice":"JFKDH"},{"invoice":"DKHFVEP"}]

Мой запрос:

$column = $_POST['column'];

    $request = $bdd->prepare("SELECT invoice from table_master WHERE $column = :find");
    $request->execute(array(
      ':find' => $_POST['find']
      ));

    $result = $request->fetchAll(PDO::FETCH_ASSOC);

    echo json_encode($result);

Я не вижу, откуда проблема, я смотрю документацию DataTables, и мой json нормально форматируется

https://datatables.net/reference/api/rows.add()

06.07.2018

Ответы:


1

Вам нужно определить, что вы собираетесь использовать параметр invoice в качестве источника столбца, например:

var table = $('#dt-table').DataTable({"columns":[{ "data": "invoice"}]});
06.07.2018
  • Спасибо, но у меня та же ошибка: предупреждение DataTables: table id=dt-table — запрошен неизвестный параметр «счет-фактура» для строки 1, столбца 0. Для получения дополнительной информации об этой ошибке см. datatables.net/tn/4 06.07.2018
  • Я перевернул оба: [{inфактура: данные}], Datatables больше не отображает ошибку, но у меня есть одна буква в строке в моей таблице 06.07.2018

  • 2

    Я не знаком с php, но столкнулся с той же проблемой, когда пытался обновить некоторые ячейки при щелчке строки из модального всплывающего окна. В итоге я установил свойства datatable внутри обратного вызова. Мне также пришлось уничтожить свою таблицу перед ее воссозданием. Вот мой обратный вызов функции LoadData:

             .done(function (result) {
                    if (result.isError) {
                        window.location.href = result.newUrl;
                    }
                    else {
                        var html = '';
                        $('#searchTable').dataTable().fnDestroy();
                        $('#searchTableBody').empty();
    
                        if (result.TransactionDetails.lenght == 0) {
                            html += '<tr><td>No Records Found</td></tr>';
                        }
                        else {
    
                            $.each(result.TransactionDetails, function (i, item) {
    
                                html += '<tr><td id="hiddenIdentifier" >' + item.x + '</td><td>' + item.y + '</td><td>' + item.z + '</td><td style="width: 10%" >' + item.a + '</td><td style="width: 30%">' + item.b + '</td><td>' + item.c + '</td><td style="width: 50%">' + item.d + '</td><td style="width: 80%"><input type="button" data-toggle="modal" data-target="#detailsModal" class="table-btn" id="btnViewDetails" value="View Details" /><input type="button" id="btnEditAmt" data-toggle="modal" class="table-btn" data-target="#amtModal" value="Edit Amount" /></td></tr>';
                            });
                        }
                        $('#searchTableBody').append(html);
    
                        var table = $('#searchTable').DataTable({
                            searching: false,
                            paging: true,
                            columnDefs: [
                                {
                                    "targets": [0],
                                    "visible": false,
                                    "searchable": false
                                },
                                {
                                    "targets": [1],
                                    "visible": true,
                                    "searchable": true
                                },
                                {
                                    "targets": [7],
                                    "orderable": false
                                }
                            ]
                        })
    
                        $('#searchTable').show();
                        $('#loaderLoadData').fadeOut();
                    }
    
            })
    

    Это работало только через вызовы API. fnDestroy() является ключевым. Убедитесь, что вы уничтожили его, прежде чем воссоздавать его. Также обратите внимание, что я устанавливаю свойства DataTable внутри функции done.

    06.07.2018
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..