it-swarm.com.de

Jquery und HTML FormData geben "Uncaught TypeError: Illegal invocation" zurück

Ich verwende dieses Skript, um meine Bilddateien hochzuladen: 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
    });
  });
});

Wenn ich jedoch auf die Schaltfläche zum Hochladen klicke, gibt die JavaScript-Konsole den folgenden Fehler zurück:

Uncaught TypeError: Illegal invocation 

jQuery Error

Können Sie mir helfen?

72
Caio Tarifa

jQuery verarbeitet das Attribut data und konvertiert die Werte in Zeichenfolgen.

Hinzufügen von processData: false zu Ihrem Optionsobjekt behebt den Fehler, aber ich bin nicht sicher, ob es das Problem behebt.

Demo: http://jsfiddle.net/eHmSr/1/

158
Blender

ich hatte das gleiche Problem, das ich mit zwei Optionen behoben

contentType: false
processData: false

Eigentlich habe ich diese beiden Befehle zu meiner $ .ajax ({}) -Funktion hinzugefügt

10
Hamid

Das Hinzufügen von processData: false Zu den $.ajax - Optionen behebt dieses Problem.

8
Anup Shetty

Meine Erfahrung:

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

Das Problem ist, dass ich vergessen habe, .val () am Ende von $ ('# myInputField') einzufügen; Diese Aktion lässt mich Zeit damit verschwenden, herauszufinden, was falsch war. verursachte einen illegalen Aufruffehler, da sich $ ('# myInputField') in befand Eine andere Datei als dieses System wies auf falschen Code hin. Hoffe, diese Antwort hilft Kollegen im selben Fehler, um Zeit zu verlieren.

3
Nowdeen