datatables warning: table id=tpedidos – invalid json response

  ajax, angularjs, json, php

Hoje começou a da erro na minhas tabelas sendo que n foi feito nenhuma alteração no código.
Estou usando angularJs, ajax, php
Já procurei tudo referente a este erro mais n conseguiu resolver.

OBS: estou usando mvvc dao, model, view e controller

segue os códigos a baixo:

controller:
var Tprodutos = $(‘#Tprodutos’).DataTable({
responsive: {
details: true
},
columns: [
{
title: "Produto",
data: "nome",
responsivePriority: 1,
orderable: true,
searchable: true
},
{
title: "Estoque",
data: ‘qtd’,
orderable: false,
searchable: false,
render: function (d) {
return d ? d : "0";
},
createdCell: function (c, d, r) {
if (r.qtd < r.qtdmin)
$(c).addClass("bg-pastel-red")
}
},
{
title: "Qtd. Mínima",
data: "qtdmin",
orderable: false,
searchable: false
},
{
title: "Preço Compra",
data: "compra",
orderable: true,
searchable: false,
render: function (d) {
return "R$ " + d;
}
},
{
title: "Preço Venda",
data: "venda",
orderable: true,
searchable: false,
render: function (d) {
return "R$ " + d;
}
},
{
title: "Ação",
data: "nome",
orderable: false,
searchable: false,
responsivePriority: 2,
render: function (d, a, r) {
var retorno = "";
retorno += " Editar ";
if (r.EM_USO === 0 && !bloq("deleteItemForever"))
retorno += " Apagar ";
retorno += "";
return retorno;
}
}
],
ajax: {
type: "POST",
url: "dao/items.php",
data: function (d) {
d.method = "serverSideList";
},
dataSrc: function (d) {
return d == null ? [] : d.data;
}
},
serverSide: true,
bInfo: true,
bFilter: true,
pageLength: 10,
bLengthChange: true,
bSort: true,
oLanguage: {
sEmptyTable: "Nenhum registro encontrado na tabela",
sInfo: "Mostrar START até END do TOTAL registros",
sInfoEmpty: "Mostrar 0 até 0 de 0 Registros",
sInfoFiltered: " (Filtrar de MAX total registros)",
sInfoPostFix: "",
sInfoThousands: ".",
sLengthMenu: "Mostrar MENU registros por pagina",
sLoadingRecords: " Carregando…",
sProcessing: "Processando…",
sZeroRecords: " Nenhum registro encontrado",
sSearch: "INPUT",
sSearchPlaceholder: "Pesquisar Por…",
oPaginate: {
sNext: " Proximo",
sPrevious: "Anterior",
sFirst: "Primeiro",
sLast: "Ultimo"
}
}
});

DAO:
case "serverSideList":
$items = new Items();
echo json_encode($items->serverSideGetItem($_POST["draw"], $_POST["start"], $_POST["length"], $_POST["search"]["value"], $_POST["columns"][$_POST["order"][0]["column"]]["data"], $_POST["order"][0]["dir"]));
break;
MODEL :
public function serverSideGetItem($draw, $start, $length, $search, $column, $dir)
{

    $connection = $this->db;
    $get;
    $max;
    if (!empty($search)) {
        $max = $connection->prepare("SELECT * FROM tb_produto
        WHERE nome LIKE :search1
        ORDER BY $column $dir");

        $get = $connection->prepare("SELECT TP.*, ES.qtd, IF(VPU.id IS NOT NULL, false, true) AS EM_USO FROM tb_produto AS TP
        LEFT JOIN vw_estoque AS ES ON TP.id = ES.id
        LEFT JOIN vw_produto_uso AS VPU ON VPU.id = TP.id
        WHERE TP.nome LIKE :search1
        ORDER BY $column $dir
        LIMIT :length OFFSET :start");

        $like = '%' . $search . "%";

        $get->bindParam(":search1", $like);

        $max->bindParam(":search1", $like);

    } else {
        $max = $connection->prepare("SELECT * FROM tb_produto
        ORDER BY $column $dir");

        $get = $connection->prepare("SELECT TP.*, ES.qtd, IF(VPU.id IS NOT NULL, false, true) AS EM_USO FROM tb_produto AS TP
        LEFT JOIN vw_estoque AS ES ON TP.id = ES.id
        LEFT JOIN vw_produto_uso AS VPU ON VPU.id = TP.id
        ORDER BY $column $dir
        LIMIT :length OFFSET :start");
    }

    $get->bindParam(":length", $length);
    $get->bindParam(":start", $start);

    $get->execute();
    $max->execute();

    $return = array(
        "draw" => $draw,
        "data" => $get->fetchAll(PDO::FETCH_ASSOC),
        "recordsFiltered" => $max->rowCount(),
        "recordsTotal" => $get->rowCount(),
    );

    return $return;
}

VIEW:

Agradeco até agora pela a ajuda

Source: AngularJS Questions

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.