[Pregunta]: Tengo problemas para vaciar un formdata porque solamente se elimina el primer dato.

Iniciado por Leguim, 27 Octubre 2020, 20:27 PM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

Hola,

tengo problemas al eliminar todos los datos/vaciar un formdata ya que solamente se elimina el primer dato y yo quiero que se eliminen todos los datos que contengan dicha variable:

Código (javascript) [Seleccionar]

var formdata_test = new FormData();
formdata_test.append('a', 'letra a');
formdata_test.append('b', 'letra b');

formdata_test.get('a');
formdata_test.get('b');

        for(var key of formdata_test.keys())
{
formdata_test.delete(key);
}

formdata_test.get('a');
formdata_test.get('b');


Si ustedes prueban este código en la consola de su navegador van a ver que el dato "b" con el valor "letra b" sigue vigente pero no el primer dato que sería "a" con el valor "letra a". Y yo quiero que se eliminen todos los datos, no solamente el primero.

Gracias.

MinusFour

Cita de: MiguelCanellas en 27 Octubre 2020, 20:27 PM
Hola,

tengo problemas al eliminar todos los datos/vaciar un formdata ya que solamente se elimina el primer dato y yo quiero que se eliminen todos los datos que contengan dicha variable:

Código (javascript) [Seleccionar]

var formdata_test = new FormData();
formdata_test.append('a', 'letra a');
formdata_test.append('b', 'letra b');

formdata_test.get('a');
formdata_test.get('b');

        for(var key of formdata_test.keys())
{
formdata_test.delete(key);
}

formdata_test.get('a');
formdata_test.get('b');


Si ustedes prueban este código en la consola de su navegador van a ver que el dato "b" con el valor "letra b" sigue vigente pero no el primer dato que sería "a" con el valor "letra a". Y yo quiero que se eliminen todos los datos, no solamente el primero.

Gracias.

Es culpa del iterador y el delete. El iterador debe funcionar por índice o algo así y tu estás borrando un registro que modifica los indices del formData. Es solo una suposición mia...

De todas formas si obtienes la lista completa de llaves antes de hacer el delete funciona.

Código (javascript) [Seleccionar]

formdata_test.get('a');
formdata_test.get('b');
var keys = [...formdata_test.keys()];

        for(var key of keys)
{
formdata_test.delete(key);
}

formdata_test.get('a');
formdata_test.get('b');