Javascript 将请求发布到页面,不执行成功函数

Javascript 将请求发布到页面,不执行成功函数,javascript,node.js,Javascript,Node.js,我的javascript文件中有以下代码: $.ajax({type: 'POST', url: '/', data: {test: 'This is some random data.'}, dataType: 'json', success: function(){ console.log('success'); }, error: function(){

我的javascript文件中有以下代码:

$.ajax({type: 'POST',
        url: '/',
        data: {test: 'This is some random data.'},
        dataType: 'json',
        success: function(){
            console.log('success');
        },
        error: function(){
            console.log('err');
        }
});
在Node中,我有以下内容:

app.post('/', function (req, res){
    console.log(req.body.test);
});

我的命令控制台正确记录了json对象,但我的网页没有执行on success函数。我不明白为什么如果数据被正确地传递和接收,那么在我的ajax请求中会调用错误函数?

在node js端,您必须对请求做出响应,否则客户端无法知道它是如何进行的,因此无法触发成功或错误回调:

app.post('/', function (req, res){
    console.log(req.body.test);
    res.end();
    // or to send json back
    // res.json({hello: 'world'});
    // to go in error callback just send a request with a status code > 400
    // res.status(400).end('bad request');
});

您只能发送一个响应。

您告诉$.ajax需要一个json响应。。。。但不从服务器返回任何内容。使用错误参数获取更多详细信息没有错误。ErrorSprown是一个空字符串,错误状态为“error”,您可以尝试发送res.json{foo:bar}响应吗;在控制台后面。log@GaryJohnson成功了。您能解释一下为什么吗?在ajax请求中,您有一行数据类型:“json”,这意味着您希望收到json响应。这并不意味着你在发送json——这是一个常见的误解。因此,在节点代码中,您需要返回一个json响应。res.json有效,但res.end无效。你能给我解释一下为什么吗?光靠res.end是不行的?奇怪的是,可能是客户端发生的事情,比如jquery