2015-12-14 14 views
5

Mam node.js 5.2.0, express 4.2.0 i groźne 1.0.17.jak wysłać tylko odpowiedź 200 w node.js

Stworzyłem prosty formularz, aby zapisać pole tekstowe i zdjęcie. Działa dobrze, ale problem polega na tym, że po przesłaniu danych widzę w konsoli, że POST nie jest skończony, wciąż jest w toku.

Aby dokończyć Dodałem to do mojego kodu

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

Chcę wysłać nagłówki i nic na stronie. Chcę, aby system uzyskał odpowiedź 200 ok bez konieczności drukowania czegokolwiek na stronie. Ale POST jest nadal w toku.

Jak to naprawić, bez konieczności drukowania czegokolwiek? Jakie nagłówki muszę wysłać?

Dzięki

UPDATE

jeśli zrobię

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

POST kończy się normalnie, ale pojawia się pusta strona. Dlaczego? Chcę tylko przesłać kilka rzeczy, nie drukować niczego na stronie, nie przekierowywać, pozostać na tej samej stronie.

Dzięki ponownie

Odpowiedz

11

Spróbuj to zamiast:

res.sendStatus(200); 

Albo jeśli chcesz nadal korzystać wyraźnie zdefiniowanych nagłówków, wierzę res.end() musi być wywołana w pewnym momencie. Możesz zobaczyć, jak res.end() jest wykorzystywany w .

Pusta strona jest najprawdopodobniej wynikiem obsługi formularza po stronie klienta. Możesz przesłonić metodę przesyłania formularza i ręcznie opublikować ją w swojej ekspresowej usłudze, aby zapobiec automatycznemu przekierowaniu, które widzisz. Oto kilka innych stackoverflow responses do pytania dotyczącego przekierowania formularza. Odpowiedzi są specyficzne dla jQuery, ale podstawowa idea pozostanie taka sama.

+0

Dzięki. Z jakiegoś powodu otrzymuję 'res.sendStatus nie jest funkcją'. Sprawdź także moją aktualizację. Jeśli dodam 'res.end();' albo w 'form.on' lub' form.parse', nadal otrzymuję pustą stronę po przesłaniu. Czy możesz mi powiedzieć, dlaczego i jak to naprawić? – slevin

+0

Hm. Czy jesteś pewien co do wersji ekspresowej? Oto link do ich [docs] (http://expressjs.com/en/api.html#res.sendStatus) do używania 'sendStatus()'. Może spróbuj '.status (200) .send (" OK ")'? Zaktualizowałem również moją główną odpowiedź dotyczącą pustej strony - kwestia ta jest najbardziej prawdopodobna po stronie klienta. – dvlsg

+0

A tak, przekierowanie jest domyślnym zachowaniem, tylko dlatego, że używam węzła nic nie zmienia. Dziękuję bardzo, zaimplementuję do tego AJAX. – slevin