jQuery Datatables : la Recherche et le filtrage avec pagination Ajax

J'ai une table SQL avec 36000 entrées à montrer dans les tables de données de la liste.
La pagination fonctionne bien depuis que je la développe comme ceci :

var table = $('.datatable').DataTable({
    pageLength : 20,
    lengthChange : false,
    processing : true,
    serverSide : true,
    ajax : {
        url :"ajax.php",
        type: "post",
    }
});

Dans mon fichier ajax.php, j'ai simplement l'écho de mes lignes (JSON codés), en fonction de la limite fixée par le numéro de page.

Le problème est originaire de filtrage et de recherche ne fonctionne plus.
Quand je veux filtrer une colonne, le "Traitement" de la couche apparaît, puis disparaît, mais mes données " est toujours la même.
Quand je veux de la recherche par le biais de la table, rien ne se passe.

Donc, voici mes questions :

  1. Comment puis-je restaurer de filtrage et de recherche ?
  2. Comment puis-je filtrer et rechercher à travers toutes les lignes (pas seulement ceux qui sont montré) ? Avec Ajax, oui, mais comment en Jquery ?

Merci à l'avance

Edit :
Merci à Abdul Rehman Sayed, j'arrive à faire la recherche de la partie.
Voici ce que j'ai fait :

var table = $('.datatable').DataTable({
    pageLength : 20,
    lengthChange : false,
    processing : true,
    serverSide : true,
    ajax : {
        data : function(d) {
            d.searching = get_search($('.datatable'));
        },
        url :"ajax.php",
        type: "post",
    },
    searching : false,
});

$('.datatable thead th').each(function() {
    var title = $(this).data('name');
    $('.datatable').find('tfoot tr').append('<td><input type="text" name="'+title+'"/></td>');
});

table.columns().every(function() {
    var that = this;
    $('input', this.footer()).on('keyup', function(e) {
        that.search(this.value).draw();
    }
});

function get_search(datatable) {
    var result = [];
    datatable.find('tfoot').find('input').each(function() {
        result.push([$(this).attr('name'), $(this).val()]);
    });
    return result;
}

Pour le filtrage, je développe une vilaine code :

$('.datatable').find('th').click(function() {
    var item = $(this);
    removeClasses($('.datatable'), item.index());
    if(item.hasClass('sorting_asc')) {
        item.removeClass('selected_asc').addClass('selected_desc');
    } else {
        item.removeClass('selected_desc').addClass('selected_asc');
    }
});

function get_sorting(datatable) {
    var result = false;
    datatable.find('th').each(function() {
        var item = $(this);
        var name = item.data('name');
        if(item.hasClass('selected_asc')) {
            result = name+' ASC';
        } else if(item.hasClass('selected_desc')) {
            result = name+' DESC';
        } else {
            //continue
        }
    });
    return result;
}

function removeClasses(datatable, index) {
    datatable.find('th').each(function() {
        if($(this).index() !== index) {
            $(this).removeClass().addClass('sorting');
        }
    });
}
Vous êtes de la manipulation de la pagination sur le côté serveur, vous devez également gérer le tri et la recherche sur le côté serveur. Lorsque vous effectuez la recherche/tri demande, vous pouvez voir les paramètres pertinents dans la chaîne de requête, voir ici pour une liste complète
pouvez-vous s'il vous plaît lien le jsfiddle

OriginalL'auteur Pauloscorps | 2015-09-07