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 diesen Fehler zurück:
Uncaught TypeError: Illegal invocation
Können Sie mir helfen?
dataType: 'json',
???processData: false
, wie von Blender vorgeschlagen , und auchcontentType: false
, wie von Caio Tarifa vorgeschlagen . Alles andere als alle drei funktionierte nicht. Siehe [diese Antwort] ( stackoverflow.com/a/3Antworten:
jQuery verarbeitet das
data
Attribut und konvertiert die Werte in Zeichenfolgen.Das Hinzufügen
processData: false
zu Ihrem Optionsobjekt behebt den Fehler, aber ich bin nicht sicher, ob es das Problem behebt.Demo: http://jsfiddle.net/eHmSr/1/
quelle
contentType: false
. Danke noch einmal!c
und nicht mit zwei geschrieben ist.Ich hatte das gleiche Problem, das ich mit zwei Optionen behoben habe
contentType: false processData: false
Eigentlich habe ich diese beiden Befehle zu meiner Funktion $ .ajax ({}) hinzugefügt
quelle
Durch Hinzufügen
processData: false
zu den$.ajax
Optionen wird dieses Problem behoben.quelle
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') hinzuzufügen; Durch diese Aktion verschwende ich Zeit damit, herauszufinden, was falsch war, was zu einem illegalen Aufruffehler führt, da sich $ ('# myInputField') in einer anderen Datei befand als das System, das auf falschen Code hingewiesen hat. Hoffe, diese Antwort hilft den Kollegen im gleichen Fehler, Zeit zu verlieren.
quelle
In meinem Fall gab es einen Fehler in der Liste der Parameter war nicht gut formuliert. Stellen Sie also sicher, dass die Parameter gut geformt sind. Für zB korrektes Format von Parametern
data: {'reporter': reporter,'partner': partner,'product': product}
quelle