Ajax-Anfrage funktioniert nicht in IE10, wenn das Formular eine Datei enthält

9

Ich habe jQuery Malsup Plugin verwendet, um Formulardaten in Ajax zu posten. Ссылка

Das Formular enthält sowohl Textdaten als auch Dateidaten (ein Bild-Upload-Feld). Ich habe ajaxSubmit() verwendet, um Formulardaten zu posten. Alle Daten werden in PHP auf der Server-Site verarbeitet.

Es funktioniert gut in Chrom, FF, IE8, IE9. Wenn ich kein Bild-Upload-Feld auswähle, funktioniert die ajax-Anfrage einwandfrei IE10. Aber wenn ein Bild ausgewählt ist, zeigt IE10 in seinen Dev Tools an.

Sie können die Funktion zum Hochladen von Dateien hier testen.

Ссылка

    
chanchal118 05.09.2013, 11:22
quelle

2 Antworten

1

Unabhängig davon, ob das Formular über GET oder POST übermittelt wird, hat der IE keine Möglichkeit, die Dateidaten in eine Zeichenfolge zu konvertieren, die an den Server übertragen werden kann.

Um einen Datei-POST durchzuführen, ohne die Seite neu zu laden, benötigen Sie die folgenden Objekte: FormData, XHR.upload, File.files. "XHR" ist das xmlHTTPRequest-Objekt, "Datei" ist die DOM-Instanz eines Dateiselektors.

Sie können auf ein normales Formular-POST zurückgreifen, falls eines der oben genannten nicht unterstützt wird:

%Vor%

Dann werden die Formulardaten wie folgt abgerufen:

%Vor%

Nachdem ich nun den Mechanismus einer Ajax-Datei-POST erklärt habe, ist es möglich, dass Ihr Plugin bereits Browser behandelt, die keine Level 2-XHR-Funktionen haben können. Wenn Sie das Plugin einbetten, stellen Sie sicher, dass es sich in einem iFrame befindet. Wenn Sie die Hauptseite beim Hochladen der Datei benachrichtigen möchten, betten Sie im Upload-Handler selbst einen JavaScript-Aufruf ein:

%Vor%

, wobei doneuploading eine JavaScript-Funktion ist, die in der enthaltenden Seite definiert ist.

Es ist auch erwähnenswert, dass

%Vor%

im Formular-Tag.

    
Schien 19.01.2014 03:59
quelle
0

Ich hatte das gleiche Problem, wo meine Erfolgsfunktion nicht sein würde ajaxSubmit aufgerufen. Ich habe am Ende das Plugin jquery forms angeschaut Code und Zeile 65 zwingt Ihren AjaxSubmit, ein GET zu verwenden, wenn Sie nicht haben angegeben form method="post" . Wenn dein Formular ziemlich groß ist, bekommst du es wird versagen. Also ist die Arbeit um method="post" auf Ihrem Formular zu verwenden Element.

    
Wez 30.12.2013 23:35
quelle

Tags und Links