Jquery et HTML FormData retournent “UnCaught TypeError: Invocation non valide”

J’utilise ce script pour télécharger mes fichiers image: http://jsfiddle.net/eHmSr/

$('.uploader input:file').on('change', function() { $this = $(this); $('.alert').remove(); $.each($this[0].files, function(key, file) { $('.files').append('
  • ' + file.name + '
  • '); data = new FormData(); data.append(file.name, file); $.ajax({ url: $('.uploader').attr('action'), type: 'POST', dataType: 'json', data: data }); }); });

    Mais lorsque je clique sur le bouton de téléchargement, la console JavaScript renvoie cette erreur:

     Uncaught TypeError: Illegal invocation 

    Erreur jQuery

    Pouvez-vous m’aider?

    jQuery traite l’atsortingbut de data et convertit les valeurs en chaînes.

    L’ajout de processData: false à votre object options corrige l’erreur, mais je ne suis pas sûr qu’elle résout le problème.

    Démo: http://jsfiddle.net/eHmSr/1/

    Ajouter processData: false aux options $.ajax corrigera ce problème.

    Mon expérience:

      var text = $('#myInputField'); var myObj = {title: 'Some title', content: text}; $.post(myUrl, myObj, callback); 

    Le problème est que j’ai oublié d’append .val () à la fin de $ (‘# myInputField’); Cette action me fait perdre du temps à essayer de déterminer ce qui n’allait pas, provoquant une erreur d’invocation illégale , car $ (‘# myInputField’) se trouvait dans un fichier différent de celui indiqué par le code incorrect. J’espère que cette réponse aidera les gars dans la même erreur pour éviter de perdre du temps.

    J’ai eu le même problème que j’ai résolu avec l’utilisation de deux options

     contentType: false processData: false 

    En fait, j’ai ajouté ces deux commandes à ma fonction $ .ajax ({})

    Dans mon cas, il y avait une erreur dans la liste des parameters qui n’était pas bien formée. Assurez-vous donc que les parameters sont bien formés. Par exemple, format correct des parameters

     data: {'reporter': reporter,'partner': partner,'product': product}