2016-04-16 10 views
1

Ich versuche herauszufinden, wenn mein Node-Server reagiert auf meine Ajax senden. Derzeit sendet das Formular einige Zeichenfolgen an den Server, wo es die Datei findet und an den Client zurücksendet. Ich möchte erkennen können, wenn der Client die Datei erhält, damit ich die Webseite ändern kann. Ich habe versucht, Ajax Form zu verwenden, aber ich glaube nicht, dass es das Empfangen von Dateien, nur XML- oder JSON-Antworten usw. unterstützt. Wenn ich es versuchte, würde der Node-Server das Richtige tun und die Datei senden, aber der Client würde es nie erhalten. Hier ist mein aktueller Code, der funktioniert und der Client erhält die Datei, aber ich möchte die Webseite nicht ändern können, sobald sie sie erhalten hat, was sie nicht tut.Ajax erkennen, wenn von Senden abgeschlossen ist

$(document).on('click', 'a', function() { 
    var form = $(this).parents().find("#download-form").submit(); 
    $(this).addClass("disabled"); 
    $(this).html("<i class='fa fa-refresh fa-spin'></i>"); 
    }); 
+0

'.submit()' die Seite isn‘nachladen t es? – Rayon

+0

Möchten Sie das 'window.onload' Event hören? – Rayon

+0

Warum nicht Ajax anrufen und den Link zu der Datei bekommen? Beim erfolgreichen Rückruf von ajax können Sie den Inhalt der Webseite ändern. Ist es notwendig, die Dateidaten in der Antwort zu senden? Normalerweise ist es keine gute Übung, da mehr Bandbreite benötigt wird. – rajesh

Antwort

0

Sie können target Attribut des Formulars auf einem Iframe gesetzt und ein Ereignis-Listener auf die load Veranstaltung iframe hinzufügen.

Beispiel: (auch in jsfiddle)

<script> 
    document.getElementById("resultFrame").addEventListener("load", function(){ 
     // do something once iframe loaded 
     document.getElementById("resultCount").innerHTML = parseInt(document.getElementById("resultCount").textContent)+1; 
    }); 
</script> 

<form method="GET" action="https://fiddle.jshell.net/img/logo.png" target="resultFrame"> 
    <input type="submit" /> 
</form> 

<p id="resultCount">0</p> 

<iframe name="resultFrame" id="resultFrame"></iframe> 
0

Sie ajax:complete Ereignis verwenden können Erfolg Ihrer Form zu erkennen einreichen()

var form = $(this).parents().find("#download-form"); 
form.bind('ajax:complete', function() { 
     // tasks to do 
}); 
form.submit(); 
Verwandte Themen