Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 27 Octubre 2020, 20:27 pm



Título: [Pregunta]: Tengo problemas para vaciar un formdata porque solamente se elimina el primer dato.
Publicado por: Leguim 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
  1. var formdata_test = new FormData();
  2. formdata_test.append('a', 'letra a');
  3. formdata_test.append('b', 'letra b');
  4.  
  5. formdata_test.get('a');
  6. formdata_test.get('b');
  7.  
  8.        for(var key of formdata_test.keys())
  9. {
  10. formdata_test.delete(key);
  11. }
  12.  
  13. formdata_test.get('a');
  14. formdata_test.get('b');
  15.  

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.


Título: Re: [Pregunta]: Tengo problemas para vaciar un formdata porque solamente se elimina el primer dato.
Publicado por: MinusFour en 27 Octubre 2020, 21:42 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
  1. var formdata_test = new FormData();
  2. formdata_test.append('a', 'letra a');
  3. formdata_test.append('b', 'letra b');
  4.  
  5. formdata_test.get('a');
  6. formdata_test.get('b');
  7.  
  8.        for(var key of formdata_test.keys())
  9. {
  10. formdata_test.delete(key);
  11. }
  12.  
  13. formdata_test.get('a');
  14. formdata_test.get('b');
  15.  

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
  1. formdata_test.get('a');
  2. formdata_test.get('b');
  3. var keys = [...formdata_test.keys()];
  4.  
  5.        for(var key of keys)
  6. {
  7. formdata_test.delete(key);
  8. }
  9.  
  10. formdata_test.get('a');
  11. formdata_test.get('b');


Título: Re: [Pregunta]: Tengo problemas para vaciar un formdata porque solamente se elimina el primer dato.
Publicado por: Leguim en 28 Octubre 2020, 08:07 am
Gracias.