Heim >Web-Frontend >js-Tutorial >Wie kann ich mit Ajax gleichzeitig Daten und Dateien hochladen?

Wie kann ich mit Ajax gleichzeitig Daten und Dateien hochladen?

Susan Sarandon
Susan SarandonOriginal
2024-12-14 02:57:10393Durchsuche

How Can I Simultaneously Upload Data and Files Using Ajax?

Gleichzeitiges Hochladen von Daten und Dateien mit Ajax

Die Verwendung von Ajax für die Formularübermittlung bietet eine nahtlose Benutzererfahrung, beim Versuch, beides hochzuladen, treten jedoch Herausforderungen auf Daten und Dateien gleichzeitig. Dieser Artikel befasst sich mit diesem Problem und zeigt, wie die Datei-Upload- und Datenerfassungsmethoden kombiniert werden können, um eine erfolgreiche Übermittlung mehrerer Felder zu erreichen.

Das Problem verstehen

Die Abfrage stammt aus den unterschiedlichen Strategien zur Übermittlung von Daten und Dateien mit jQuery und Ajax. Während Daten mit .serialize() gesammelt werden, verwenden Dateien new FormData($(this)[0]). Die Zusammenführung dieser Techniken ermöglicht die gleichzeitige Übertragung von Daten und Dateien.

Die Lösung

Die Lösung liegt in der korrekten Verwendung des jQuery-Identifiers. Durch die Verwendung von new FormData(this) anstelle seines ursprünglichen Gegenstücks können sowohl Daten als auch Dateien in ein FormData-Objekt gekapselt werden. Dieses Objekt dient dann als Datenparameter für die Ajax-Anfrage.

Beispielcode

Der folgende Codeausschnitt zeigt die Integration beider Methoden:

$("form#data").submit(function(e) {
    e.preventDefault();

    var formData = new FormData(this);

    $.ajax({
        url: window.location.pathname,
        type: 'POST',
        data: formData,
        success: function (data) {
            alert(data);
        },
        cache: false,
        contentType: false,
        processData: false
    });
});

Implementierungsdetails

Im bereitgestellten Code ein Ajax Die Anfrage wird bei der Formularübermittlung initiiert, wobei das FormData-Objekt verwendet wird, um alle Formularfelder und Dateien zu kapseln. Die Optionen „contentType“ und „processData“ sind deaktiviert, um sicherzustellen, dass die nativen FormData unverändert bleiben. Der Erfolgsrückruf verarbeitet die vom Server empfangene Antwort.

Vereinfachte Version

Der Kürze halber bietet der folgende Code eine vereinfachte Version der Lösung:

$("form#data").submit(function(e) {
    e.preventDefault();
    var formData = new FormData(this);

    $.post($(this).attr("action"), formData, function(data) {
        alert(data);
    });
});

Das obige ist der detaillierte Inhalt vonWie kann ich mit Ajax gleichzeitig Daten und Dateien hochladen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn