jQuery Ajax Datei-Upload

Kann ich den folgenden jQuery-Code verwenden, um Datei-Upload mit POST-Methode einer Ajax-Anfrage durchzuführen?

$.ajax({
    type: "POST",
    timeout: 50000,
    url: url,
    data: dataString,
    success: function (data) {
        alert('success');
        return false;
    }
});

Wenn es möglich ist, muss ich dann den "data"-Teil ausfüllen? Ist das der richtige Weg? Ich POSTe die Datei nur an die Serverseite.

Ich habe herumgegoogelt, aber was ich gefunden habe, war ein Plugin, während ich es in meinem Plan nicht verwenden möchte. Zumindest im Moment.

Lösung

Datei-Upload ist nicht möglich durch Ajax. Sie können eine Datei hochladen, ohne die Seite zu aktualisieren, indem Sie einen IFrame verwenden. Weitere Details können Sie hier nachlesen.

UPDATE:

Mit XHR2 wird der Datei-Upload durch AJAX unterstützt. Z.B. durch FormData Objekt, aber leider wird es nicht von allen/alten Browsern unterstützt.

Die FormData-Unterstützung beginnt mit den folgenden Desktop-Browsern. IE 10+, Firefox 4.0+, Chrome 7+, Safari 5+, Opera 12+

Für weitere Einzelheiten siehe MDN-Link

Kommentare (9)

Ein AJAX-Upload ist in der Tat mit XMLHttpRequest() möglich. Keine iframes notwendig. Der Fortschritt des Uploads kann angezeigt werden.

Für Details siehe: Antwort https://stackoverflow.com/a/4943774/873282 auf Frage https://stackoverflow.com/questions/4856917/jquery-upload-progress-and-ajax-file-upload.

Kommentare (1)
  • Verwenden Sie einen versteckten iframe und setzen Sie das Ziel des Formulars auf den Namen des iframe. Auf diese Weise wird nur der iframe aktualisiert, wenn das Formular abgeschickt wird.
  • Lassen Sie einen Ereignishandler für das Ladeereignis des iframe registrieren, um die Antwort zu parsen.

Weitere Einzelheiten finden Sie in meinem Blogbeitrag: http://blog.manki.in/2011/08/ajax-fie-upload.html.

Kommentare (2)