空节点.js/快速响应

Empty Node.js/Express response

本文关键字:响应 节点 js      更新时间:2023-09-26

我有一个 POST 请求要处理:

var app = require('express')();
var bodyParser = require('body-parser');
app.use(bodyParser());
. . .
app.post('/signup', function(req, res) {
    console.log('name: ' + req.body.name);
    console.log('email: ' + req.body.email);
    . . .
});

一切似乎都很好,很花花公子。

我的客户:

<html><body>
    <form>
    Name:<br>
    <input type="text" name="name"><br>
    Email:<br>
    <input type="text" name="email"><br>
    <input id="submit" type="submit" value="Submit">
    </form>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
<script>
$('input#submit').click(function() {
    $.ajax({
        url: 'http://localhost:5000/signup',
        type: 'post',
        dataType: 'json',
        data: $('form').serialize(),
        success: function(data) {
            console.log('response:', data);
        }
    });
    return false;
});
</script></body></html>

问题出在哪里? success永远不会在客户端中调用。最终,Chrome JS-debug窗口显示:net::ERR_EMPTY_RESPONSE

我尝试在服务器中执行res.send(200)res.send('')res.end(),但没有成功。

我的 Node.js 版本是 4.2.6,我认为我的 Express 版本是 4.4.1。

jQuery Docs

数据类型 - 您希望从服务器返回的数据类型;

data - 要发送到服务器的数据;

因此,前端应用程序需要有效的 JSON 返回,但主节点(字符串、数字、布尔值)不是有效的 JSON,必须对其进行转换。

为了在飞行中执行此操作:

res.json('success');

res.status(200).json('success');

如果你想坚持使用发送方法,你可以写:

res.send(JSON.stringify('success'));

另外,有时此问题与窗口和网络连接中的ipconfig有关

你能试试这个吗,

$.post('http://localhost:5000/signup', $('form').serialize(), function(data) {
    console.log(data);
});