Pourquoi ne pouvons-nous pas faire de réponses multiples.envoyer Express.js?
Il y a 3 ans, je pouvais faire plusieurs res.envoyer express.js.
même écrire un setTimeout pour afficher une sortie.
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>');
Maintenant qu'il va jeter:
Error: Can't set headers after they are sent
Je sais nodejs et l'express ont mis à jour. pourquoi on ne peut pas le faire maintenant? une autre idée?
Trouvé la solution, mais une "res.écrire" n'est pas dans la référence de l'api http://expressjs.com/4x/api.html ...
: S
Vous devez vous connecter pour publier un commentaire.
Peut-être vous avez besoin de:
response.write
res.send
appelle implicitementres.write
suivie parres.end
. Si vous appelezres.send
plusieurs fois, il travaillera la première fois. Cependant, depuis la premièreres.send
la fin de l'appel de la réponse, vous ne pouvez pas ajouter quoi que ce soit pour la réponse.response.write
; mon cerveau était en Exprimer la terre :/res.render
oures.send
, j'utiliseres.write
quand j'étais un débutant. @emj365 pourquoi ne pas essayerres.render
?respone.write
etresponse.writeHead
sont de lahttp.ServerResponse
api node docresponse.send
envoie l'intégralité de la réponse HTTP au client, y compris les en-têtes et le contenu, qui est pourquoi vous êtes incapable de l'appeler plusieurs fois. En fait, même les extrémités de la réponse, donc il n'est pas nécessaire d'appelerresponse.end
explicitement lors de l'utilisation deresponse.send
.Il me semble que vous tentez d'utiliser
send
comme un tampon: l'écriture, avec l'intention de vider plus tard. Ce n'est pas comment la méthode fonctionne, cependant, vous avez besoin pour construire votre réponse dans le code et ensuite faire une seulesend
appel.Malheureusement, je ne peux pas vous dire pourquoi ou quand ce changement a été fait, mais je sais qu'il a été comme ça depuis au moins l'Express 3.