2011-03-02 6 views
0

Je cherche à enregistrer toutes les données de ma grille sur un serveur. J'utilise le plugin jquery Datatables.Comment soumettre toutes les valeurs de grille au serveur à la fois avec les données jQuery?

function fnSave() { 
    var aTrs = oTable.fnGetNodes(); 
    var aReturn = new Array(); 

    for(var i=0;i<aTrs.length;i++) { 
     var aData=oTable.fnGetData(i); 
     aReturn.push(aData); 
    } 

    console.log(aReturn); 
} 

En retour je reçois:

"<input name="regimentNameAgents" value="" id="regimentNameAgents" type="text">" 
... 

Je voudrais revenir que les valeurs de la grille (et non HTML). En utilisant cette fonction, ma valeur est toujours: value = "", même si j'ajoute du texte dans l'entrée, pourquoi? Y at-il un meilleur moyen d'extraire toutes les données de la grille?

Répondre

0

Les données qui sont stockées dans le JDataTable ne sont pas celles qui sont actuellement dans le DOM, c'est ce que vous avez défini à l'origine. Ainsi, lorsque vous mettez à jour une entrée, l'élément DOM est mis à jour, mais il n'y a pas de hook pour mettre à jour les données contenues dans jdatatable. Je construis la grille quelque chose comme ceci:

var grid = new Array(); 
$("table tr").each(function() { 
    var nextRow = new Array(); 
    grid.push(nextRow); 
    $("td", this).each(function() { 
     var nextValue = $("input", this).val(); 
     nextRow.push(nextValue); 
    }); 
}); 

La variable grid doit alors stocker votre table complète des données. Je fais quelques suppositions sur la façon dont vous avez structuré votre table, car elle n'a pas été affichée, mais je suppose que c'est assez proche de ce que vous avez.

0

En utilisant datatables fnGetNodes, voici la solution:

function fnSave() { 

        var aTrs = oTable.fnGetNodes(); 
        var aReturn = new Array(); 

        $(aTrs).each(function() { 
         var nextRow = new Array(); 
         aReturn.push(nextRow); 

         $("td", this).each(function() { 
         var nextValue = $("input", this).val(); 
         nextRow.push(nextValue); 
         }); 
        });     

       console.log(aReturn); 
} 
Questions connexes