空 Node.js/Express 响应

Ric*_*ruz 5 javascript jquery node.js express

我有一个要处理的 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);
    . . .
});
Run Code Online (Sandbox Code Playgroud)

一切看起来都很顺利。

我的客户:

<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>
Run Code Online (Sandbox Code Playgroud)

问题?success从未在客户端中调用。最终,Chrome JS 调试窗口显示:net::ERR_EMPTY_RESPONSE

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

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

Bor*_*anu 5

jQuery 文档

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

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

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

为了动态执行此操作:

res.json('success');
Run Code Online (Sandbox Code Playgroud)

或者

res.status(200).json('success');
Run Code Online (Sandbox Code Playgroud)

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

res.send(JSON.stringify('success'));
Run Code Online (Sandbox Code Playgroud)

另外,有时这个问题与windows中的ipconfig和网络连接有关