Нет ответа на POST от webUI до Node.JS - PullRequest
0 голосов
/ 06 июля 2018

Я бью кирпичную стену, пытаясь понять разрыв между Ajax POST и Node.JS и ответом на него express (). Например:

Клиент:

var posting = $.post( "http://localhost:3000/put/requestList" , { first_name: "John", last_name: "Mensa", gender : "Male" })
    .done(function( data ) {
  $( "#schemesdisplay" ).append("Response sent!");
});

Сервер:

//configure body-parser for express
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());

//allow express to access our html (index.html) file
app.get('/ui/index.html', function(req, res) {
res.sendFile(__dirname + "/" + "index.html");
});
app.post('/put/requestList', function(req, res){
 response = {
  first_name : req.body.first_name,
  last_name : req.body.last_name,
  gender: req.body.gender
 };
 res.end(JSON.stringify(response + "Server Responds!"));
});
var server = app.listen(3000, function(){
var host = server.address().address;
var port = server.address().port;
console.log("Example app listening at http://%s:%s", host, port);
});

В консоли моего сервера я вижу данные, отправленные клиентом. Тем не менее, нет никаких признаков того, что сервер ответил, не говоря уже о том, как вернуть его в div, в котором мне нужен ответ.

В идеале мне нужно отправить блоки JSON из пользовательского интерфейса на сервер Node.JS и обратно. Однако создание этой простой коммуникации в двух совершенно разных средах оказалось сложной задачей.

Любые (полезные) предложения будут высоко оценены. Спасибо!

1 Ответ

0 голосов
/ 06 июля 2018

Вам необходимо заменить эту строку

res.end(JSON.stringify(response + "Server Responds!"));

с этим

res.json(response);

res.end () завершит процесс ответа. Этот метод на самом деле происходит от ядра Node, а именно от метода response.end () http.ServerResponse. Он используется для быстрого завершения ответа без каких-либо данных.

Вам также может понадобиться изменить почтовый индекс jQuery, включив в него заголовки для публикации json:

$.ajax({
    type: "POST",
    url: "http://localhost:3000/put/requestList",
    data: JSON.stringify({ first_name: "John", last_name: "Mensa", gender : "Male" }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data){
        $( "#schemesdisplay" ).append("Response sent!");
    },
    failure: function(errMsg) {
        $( "#schemesdisplay" ).append("ERROR!");
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...