2015-12-14 5 views
5

Ich habe node.js 5.2.0, Express 4.2.0 und formidable 1.0.17.wie nur eine 200 Antwort in node.js senden

Ich habe ein einfaches Formular erstellt, um ein Textfeld und ein Foto zu speichern. Es funktioniert gut, aber das Problem ist, nachdem die Daten hochgeladen wurden, kann ich in der Konsole sehen, dass der POST nicht fertig ist, noch immer ausstehend.

Um es zu beenden Ich habe diese zu meinen Code

form.on('end', function() { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
}); 

ich die Header und nichts auf der Seite nur senden möchten. Ich möchte, dass das System eine 200 ok Antwort erhält, ohne etwas auf der Seite drucken zu müssen. Aber der POST steht noch aus.

Wie kann ich das beheben, ohne etwas drucken zu müssen? Welche Art von Header muss ich senden?

Dank

UPDATE

Wenn ich

form.on('end', function() { 
    res.end(); 
}); 

tun Der POST endet normalerweise, aber ich erhalte eine leere Seite. Warum das? Ich möchte nur etwas hochladen, nichts auf der Seite drucken, nicht umleiten, auf der gleichen Seite bleiben.

Thanks again

Antwort

11

Versuchen Sie stattdessen:

res.sendStatus(200); 

Oder wenn Sie explizit definiert Headern fortsetzen wollen, glaube ich res.end() an einem gewissen Punkt aufgerufen werden muss. Sie können sehen, wie res.end() in der Formidable example verwendet wird.

Die leere Seite ist höchstwahrscheinlich das Ergebnis Ihrer clientseitigen Formularverarbeitung. Möglicherweise möchten Sie die Übermittlungsmethode des Formulars überschreiben und manuell an Ihren Expressdienst senden, um die automatische Weiterleitung zu verhindern, die Sie sehen. Hier sind einige andere stackoverflow responses zu einer Frage mit Formularumleitung. Die Antworten sind jQuery-spezifisch, aber die Grundidee bleibt gleich.

+0

Danke. Aus irgendeinem Grund bekomme ich 'res.sendStatus ist keine Funktion'. Überprüfen Sie auch mein Update. Wenn ich 'res.end();' entweder in 'form.on' oder in' form.parse' hinzufüge, bekomme ich nach dem Hochladen immer noch eine leere Seite. Können Sie mir bitte sagen, warum und wie Sie das beheben können? – slevin

+0

Hm. Sind Sie sich über die Express-Version sicher? Hier ist ein Link zu ihrer [docs] (http://expressjs.com/en/api.html#res.sendStatus) für die Verwendung von 'sendStatus()'. Vielleicht versuchen Sie '.status (200) .send ('OK')'? Ich habe auch meine wichtigste Antwort in Bezug auf die leere Seite aktualisiert - das Problem ist höchstwahrscheinlich Client-Seite an diesem Punkt. – dvlsg

+0

A ja, die Umleitung ist das Standardverhalten, nur weil ich Knoten verwende ändert nichts. Vielen Dank, ich werde AJAX dafür bereitstellen. – slevin

Verwandte Themen