Warum können wir nicht mehrere Antwort.senden Express.js?
Vor 3 Jahren konnte ich mehrere res.senden express.js.
sogar das schreiben einer setTimeout zu zeigen, bis einen live-output.
response.send('<script class="jsbin" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>');
response.send('<html><body><input id="text_box" /><button>submit</button></body></html>');
var initJs = function() {
$('.button').click(function() {
$.post('/input', { input: $('#text_box').val() }, function() { alert('has send');});
});
}
response.send('<script>' + initJs + '</script>');
Nun wird es werfen:
Error: Can't set headers after they are sent
Ich weiß, nodejs und express aktualisiert haben. warum kann das nicht jetzt? jede andere Idee?
Fand die Lösung, sondern "res.schreiben" ist nicht in der api-Referenz http://expressjs.com/4x/api.html ...
: S
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht brauchen Sie:
response.write
res.send
implizit fordertres.write
gefolgt vonres.end
. Wenn Sie anrufenres.send
mehrmals, es funktioniert das erste mal. Da jedoch die erstenres.send
Anruf beendet die Reaktion, Sie können nicht hinzufügen, etwas auf die Antwort.response.write
; mein Gehirn war im Express-land :/res.render
oderres.send
verwende ichres.write
als ich war ein Neuling. @emj365 warum nicht versuchenres.render
?respone.write
undresponse.writeHead
sind von derhttp.ServerResponse
- api - node docresponse.send
sendet eine gesamte HTTP-Antwort an den client, einschließlich Header und Inhalt, das ist, warum Sie nicht rufen Sie es mehrfach. In der Tat, es endet auch die Antwort, so gibt es keine Notwendigkeit zu nennenresponse.end
explizit bei der Verwendung vonresponse.send
.Scheint es mir, dass Sie versuchen, verwenden Sie
send
wie ein Puffer: schreiben mit der Absicht, Sie zu Spülen später. Dies ist nicht, wie die Methode funktioniert, jedoch; Sie müssen bauen Sie Ihre Antwort in code und erstellen Sie dann eine einzelnesend
nennen.Leider, ich kann nicht sprechen, Wann oder warum diese änderung vorgenommen wurde, aber ich weiß, es wurde schon mindestens seit Express 3.