Domanda

Ho una tabella dei dati sulla mia pagina. Le colonne sono "Start", "fine", "commento" e "opzioni". All'interno della colonna di opzioni è un pulsante per eliminare la riga, e un pulsante che fa una riga della tabella modificabile. In questo modo i valori di "start", "fine" e "commento" di essere cambiato. Cliccando nuovamente termina il processo di editing. Infine, v'è un modo per aggiungere un'altra riga alla tabella. Tutto questo funziona come previsto.

Voglio aggiungere un pulsante nella parte inferiore che crea un array fuori dai dati della tabella, che assomiglia a questo (rappresentato come JSON puramente per facilità di mostrare al SO: non richiesto):

[
    {
        "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.",
    }
]

Non dovrei avere troppi problemi la costruzione della matrice, ma una volta che ho, come posso postare ad uno script php backend (che sarà quindi utilizzare put_csv() per scrivere i dati in un file)? Idealmente, sarebbe availiable lato server in un formato array, per consentire la convalida.

Sono felice di usare jQuery, se è necessario.

È stato utile?

Soluzione

Come si finisce al server dipende da cosa vuoi archieve. Se si desidera caricare una nuova pagina, che dovrà elaborare i dati, è possibile utilizzare un modulo di consueto con ingressi nascosti. In alternativa, se si desidera elaborare è in background tramite la tecnologia AJAX, utilizzare jQuery.ajax come diceva Crasco. In entrambi i casi si utilizza, è necessario convertire la matrice strutturato in un semplice elenco chiave / valore.

Una possibilità è quella di generare un documento JSON (non credo che jQuery fornisce una funzione per questo, ma si può facilmente trovare qualcosa) e utilizzare un singolo campo con il documento serializzato. Poi sul lato server si usa json_decode per ottenere la matrice indietro. Se si utilizza il metodo di AJAX, l'opzione dati in chiamata jQuery.ajax dovrebbe contenere:

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

Un approccio migliore sarebbe quello di serializzare in un elenco di campi in un formato che PHP capisce nativamente. Ciò significa che devi fare niente di speciale, e $_POST['data'] conterrà l'array. Ad esempio:

{
    '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.',
    ... 
}

Se si utilizza il metodo di modulo, è necessario generare campi di input come:

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

Altri suggerimenti

avrei sicuramente utilizzare jQuery. Ecco la pagina per la funzione $ .post ().

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

Un avvertimento è che $ .post () è un wrapper per la funzione $ .ajax () che viene semplificato ed elimina la capacità di impostare callback per qualsiasi cosa, ma un post di successo. Per importanti operazioni tramite la tecnologia AJAX, vorrei utilizzare questo:

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

Un esempio è:

$.ajax({
      url: "script.php",
      global: false,
      type: "POST",
      data: ({id : this.getAttribute('id')}),
      dataType: "html",
      success: function(msg){
         alert(msg);
      }
   });
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top