Question

J'ai une table de données sur ma page. Les colonnes sont « start », « fin », « commentaire », et « options ». Au sein de la colonne d'options est un bouton pour supprimer la ligne, et un bouton qui fait une ligne de la table modifiable. Cela permet aux valeurs de « start », « fin » et « comment » à changer. En cliquant dessus, se termine à nouveau le processus d'édition. Enfin, il existe un moyen d'ajouter une autre ligne à la table. Tout cela fonctionne comme prévu.

Je veux ajouter un bouton en bas qui crée un tableau à partir des données de la table, qui ressemble à ceci (représenté comme JSON purement pour la facilité de montrer à SO: non nécessaire):

[
    {
        "start"     :"2009/08/01",
        "end"       :"2009/08/08",
        "comment"   :"an example date.",
    },
    {
        "start"     :"2009/07/01",
        "end"       :"2009/07/08",
        "comment"   :"another example date, a month earlier.",
    },
    {
        "start"     :"2000/07/01",
        "end"       :"2000/07/08",
        "comment"   :"another example date, a year earlier. You get the idea.",
    }
]

Je ne devrais pas avoir trop de mal construire le tableau, mais une fois que je l'ai, comment puis-je l'envoyer à un script php backend (qui utilisera alors put_csv() pour écrire les données dans un fichier)? Idéalement, il serait côté serveur availiable dans un format de tableau, pour permettre la validation.

Je suis heureux d'utiliser jquery, si elle est nécessaire.

Était-ce utile?

La solution

Comment il finir au serveur dépend de ce que vous voulez archieve. Si vous voulez charger une nouvelle page, qui traitera les données, vous pouvez utiliser une forme habituelle avec des entrées cachées. Sinon, si vous voulez traiter est en arrière-plan via AJAX, utilisez jQuery.ajax comme l'a dit Crasco. De toute façon que vous utilisez, vous devez convertir le tableau structuré en une simple liste clé / valeur.

L'une des options est de générer un document JSON (je ne pense pas que jQuery fournit une fonction pour cela, mais vous pouvez facilement trouver quelque chose) et d'utiliser un seul champ avec le document sérialisé. Ensuite, sur le côté serveur que vous utilisez json_decode pour obtenir le tableau arrière. Si vous utilisez la méthode AJAX, l'option de données dans l'appel de jQuery.ajax contiendrait:

{
    'data': '[{"start":"2009/08/01","end":"2009/08/08","comment":"an example date."},...'
}

Une meilleure approche serait de ce sérialisation dans une liste de champs dans un format que PHP comprend nativement. Cela signifie que vous devez faire rien de spécial, et $_POST['data'] contiendra le tableau. Par exemple:

{
    'data[0][start]': '2009/08/01',
    'data[0][end]': '2009/08/08',
    'data[0][comment]': 'an example date.',
    'data[1][start]': '2009/07/01',
    'data[1][end]': '2009/07/08',
    'data[1][comment]': 'another example date, a month earlier.',
    ... 
}

Si vous utilisez la méthode de formulaire, vous devez générer des champs d'entrée comme:

<input type="hidden" name="data[0][start]" value="2009/08/01" />

Autres conseils

Je certainement utiliser jQuery. Voici la page pour la fonction de .post $ ().

http://docs.jquery.com/Ajax/jQuery.post

Une mise en garde est que .post $ () est une enveloppe pour la fonction .ajax $ () qui est simplifiée et élimine votre capacité à mettre callbacks pour quoi que ce soit, mais un poste avec succès. Pour les transactions importantes via AJAX, j'utiliser ceci:

http://docs.jquery.com/Ajax/jQuery.ajax

Un exemple étant:

$.ajax({
      url: "script.php",
      global: false,
      type: "POST",
      data: ({id : this.getAttribute('id')}),
      dataType: "html",
      success: function(msg){
         alert(msg);
      }
   });
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top