Pregunta

Estoy pensando que esto no es exactamente posible, pero tal vez me equivoque. Simplemente estoy dividido entre aquellos que creen que sólo las solicitudes POST deben modificar los datos en el servidor y las personas que relajan la regla y permiten peticiones GET para modificar los datos.

Tome esta situación. Digamos que tiene una tabla, cada fila es una fila en la base de datos. Me gustaría que les permita eliminar la fila a través de un icono de lujo "X" como el último elemento de <td></td> en la fila. Que yo sepa, la única manera de enviar un POST al servidor es a través de un formulario. Pero lo que realmente meto una forma completa en el último elemento <td></td> sólo para hacer un POST? O debería engañar y utilizar una etiqueta <a href=...></a> que envía una solicitud GET?

Usted puede estar pensando "hacer las dos cosas! Enviar un poste y utilizar la etiqueta <a ...></a> Usa fantasía Javascript + xhr!" Y voy a decir, ah? Y cómo lo hará que se degradan en un ambiente de cero javascript?

Tal vez hemos llegado a un punto en que no tiene sentido que preocuparse de degradar gracia? No estoy seguro. ¿Dígame usted? Soy nuevo en el desarrollo web, pero entiendo la mayor parte de los conceptos involucrados.

¿Fue útil?

Solución

Usted no tiene que meter una forma en cada uno td final - se puede rodear toda la tabla con un único formulario que tiene un botón de envío en cada td final. Cada uno necesita un valor de nombre / número de identificación diferente, por ejemplo.

    <td><input type="submit" name="delete_172" value="Delete"></td>
    ...
    <td><input type="submit" name="delete_198" value="Delete"></td>

A continuación, el servidor va a recibir una sola delete_172=Delete en los parámetros de forma POST. Escanear a través de todos los parámetros para que coincida con delete_[0-9]+, dividir el guión bajo, y usted tiene el ID de registro del registro que desea eliminar, o si tiene una clave del mapa para encontrar el ID de registro para borrar (si desea mantener ID de registros fuera de la página para la seguridad)

Una vez que las obras, adjuntar un controlador de eventos JS para el evento de formulario onSubmit someter el asunto a través XHR y dinámicamente eliminar la fila de tabla.

Otros consejos

Uno de los problemas con una petición GET modificación de los datos es que al visitar el enlace de datos se cambia. El vínculo no podría incluso ser navegado a una persona, por ejemplo, Google rastreo de su sitio. Golpear actualización también cambia los datos.

No aconsejo haciendo caso omiso de la convención sobre GET vs POST. El botón Atrás y página refresca y cosas por el estilo le dará el infierno. (Y cada vez que el campo de un solicitud POST, redirección a una visión fresca, por las mismas razones.)

Sólo usted sabe sus usuarios, pero yo creo que es bastante aceptable hoy en día necesitan Javascript en una 'aplicación web' y dejar que los no-js chicos se pegan a 'páginas web. De todos modos, por si sirve de algo, a veces me gusta hacer menos elegante (de AJAX) solución de JavaScript como este ...

Ponga un formulario en cualquier lugar que desee en la página:

<form method="post" target="yourpage.ext" id="deleteRecordForm">
 <input type="hidden" name="IdToDelete" value="" id="deleteRecordInput" />
</form>

Para su enlace:

<a href="#" onclick="deleteRecord(thisId);return false;">[x]</a>

Finalmente, el javascript:

<script type="text/javascript">
 function deleteRecord (id){
   if (confirm ('Are you sure you want to delete this record?')){
     document.getElementById('deleteRecordInput').value = id;
     document.getElementById('deleteRecordForm').submit ();
   }
 }
</script>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top