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('<li>' + file.name + '</li>');
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
Pouvez-vous m'aider?
jQuery traite l'attribut data
et convertit les valeurs en chaînes.
Ajouter processData: false
à votre objet d’options corrige l’erreur, mais je ne suis pas sûr qu’il corrige le problème.
j'ai eu le même problème que j'ai résolu avec deux options
contentType: false
processData: false
En fait, j'ai ajouté ces deux commandes à ma fonction $ .ajax ({})
Ajouter processData: false
à la $.ajax
options vont résoudre 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'ajouter .val () à la fin de $ ('# myInputField'); cette action me fait perdre du temps à essayer de comprendre ce qui n'allait pas, provoquant une erreur d'invocation illégale , puisque $ ('# myInputField ') se trouvait dans un fichier différent de celui dans lequel le système avait indiqué un code incorrect. J'espère que cette réponse aidera les boursiers dans la même erreur à éviter de perdre du temps.