Pregunta

Tengo una tabla de datos en mi página. Las columnas están en "Inicio", "extremo", "comentarios" y "opciones". Dentro de la columna de opciones es un botón para eliminar la fila, y un botón que hace que una fila de la tabla editable. Esto permite que los valores de "inicio", "fin" y "comentario" para ser cambiados. Al hacer clic de nuevo termina el proceso de edición. Por último, hay una manera de añadir otra fila a la tabla. Todo esto funciona como se esperaba.

Quiero añadir un botón en la parte inferior que crea una matriz de los datos de la tabla, que se ve así (representado como JSON simplemente para facilitar la muestra de SO: no es obligatorio):

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

No debería tener demasiados problemas para la construcción de la matriz, pero una vez que tengo, ¿cómo puedo publicar a un script php backend (que a su vez utilizar put_csv() para escribir los datos en un archivo)? Lo ideal sería availiable del lado del servidor en un formato de matriz, para permitir la validación.

Estoy feliz de usar jQuery, si es necesario.

¿Fue útil?

Solución

¿Cómo se termina en el servidor depende de lo que quieres archieve. Si desea cargar una nueva página, que procesará los datos, se puede utilizar una forma habitual con entradas ocultas. Alternativamente, si desea procesar está en el fondo a través de AJAX, utilice jQuery.ajax como dijo CRasco. De cualquier modo de usar, lo que necesita para convertir la matriz estructurada en una simple lista de clave / valor.

Una opción es generar un documento JSON (no creo jQuery proporciona una función para esto, pero se puede encontrar fácilmente algo) y utilizar un solo campo con el documento serializado. A continuación, en el lado del servidor que usaría json_decode para obtener la matriz de vuelta. Si está utilizando el método de AJAX, la opción de datos en la llamada jQuery.ajax contendría:

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

Un mejor enfoque sería para serializar en una lista de campos en un formato que PHP entiende de forma nativa. Eso significa que tiene que hacer nada especial, y $_POST['data'] contendrá la matriz. Por ejemplo:

{
    '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 está utilizando el método de formulario, que necesita para generar campos de entrada como:

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

Otros consejos

Sin duda usar jQuery. Esta es la página para la función $ .post ().

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

Una advertencia es que $ .post () es un contenedor para la función $ .ajax () que se simplifica y elimina su capacidad de fijar las devoluciones de llamada para nada más que un puesto de éxito. Para las transacciones importantes a través de Ajax, me gustaría utilizar esto:

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

siendo un ejemplo:

$.ajax({
      url: "script.php",
      global: false,
      type: "POST",
      data: ({id : this.getAttribute('id')}),
      dataType: "html",
      success: function(msg){
         alert(msg);
      }
   });
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top