/ / res.end () nefunguje s žiadosťou jquery post - jquery, node.js

res.end () nefunguje s žiadosťou jquery post - jquery, node.js

Prečo sa res.end ("Odoslaná") nepracuje, aj keď je spustená konzola.log? Verím, že je to kvôli spôsobu odoslania žiadosti o príspevok, ale naozaj nemám potuchy, prečo.

<!DOCTYPE HTML>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.1.1.js" integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA=" crossorigin="anonymous"></script>
<script>
function post() {
$.post("/", {
type: "foo"
});
}
</script>
</head>
<body><button onclick="post()">Post</button></body>
</html>

NodeJS

var http = require("http");
var fs = require("fs");
var index = fs.readFileSync("index.html");
var server = http.createServer(function(req, res) {
if (req.method == "POST") {
console.log("foo");
res.end("Sent");
} else {
res.end(index);
}
}).listen(8080);

odpovede:

0 pre odpoveď č. 1

Požiadavka ajax od prehliadača jednoducho odosiela ažiadosť na server a načítanie odpovede. Samotná odpoveď ajax nemá nič spoločné so stránkou, ktorá sa zobrazuje v prehliadači. Ak chcete v prehliadači urobiť niečo s odpoveďou ajax, potom musíte napísať nejaký Javascript, aby ste zvládli odpoveď a potom s tým niečo urobili.

Na minimu môžete napísať niečo do konzoly, aby ste zistili, akú odpoveď máte.

<script>
function post() {
$.post("/", {type: "foo"}).then(function(data) {
// handle response here
console.log(data);
});
}

Ak chcete, aby sa obsah zobrazoval v aktuálnom okne prehliadača, môžete tiež napísať nejaký jazyk Javascript, aby ste vložili tento obsah do aktuálnej stránky:

<script>
function post() {
$.post("/", {type: "foo"}).then(function(data) {
// replace current page contents with the data we got back
document.body.innerHTML = data;
});
}

Ak na svojej stránke HTML vytvoríte formulár a nastavíte houp s akčnou adresou URL a POST ako metódou a nechajte prehliadač automaticky odoslať formulár, potom prehliadač prijme akúkoľvek odpoveď zo servera a automaticky nahradí obsah aktuálnej stránky touto odpoveďou. Ale to je len vtedy, ak je formulár predložený samotným prehliadačom, nie cez Ajaxovu volanie z vášho vlastného Javascriptu. Výzvy Ajaxu samy osebe neovplyvňujú aktuálny obsah stránky. Akákoľvek zmena na aktuálnu stránku z Ajaxovho volania sa musí vykonať vlastným Javascriptom.