Javascript 使用jQuery发出$.post请求时,返回的数据未定义

Javascript 使用jQuery发出$.post请求时,返回的数据未定义,javascript,jquery,post,Javascript,Jquery,Post,我试图发出一个简单的post请求,但由于某些原因,我发送的数据返回为未定义。在发出post请求之前,我已经检查了控制台以确保数据存在,并且数据在那里。如果您在下面查看,var$description从一个简单的html输入字段获取其值。数据是文本,正如我所说的那样存在。为什么警报返回“未定义” $('#addTodo').click(function (event) { $('#success').hide(); $('#failure').hi

我试图发出一个简单的post请求,但由于某些原因,我发送的数据返回为未定义。在发出post请求之前,我已经检查了控制台以确保数据存在,并且数据在那里。如果您在下面查看,
var$description
从一个简单的html输入字段获取其值。数据是文本,正如我所说的那样存在。为什么警报返回“未定义”

$('#addTodo').click(function (event) {

            $('#success').hide();
            $('#failure').hide();

            $description = $('#todoDescription').val();

            $.post('/todos', {description: $description})
                .done(function(data) {

                    alert( "Data Loaded: " + data.description);

            });

        });
以下是在服务器上处理请求的方式:

app.post('/todos', function (req, res) {
    var body = req.body;

    console.log('description: ' + body.description);
    res.json(body);

});

您的数据未定义,请检查您从服务器返回的内容。您可以在firebug或任何其他浏览器开发工具中看到它。另外,调用console.log(data)并直接在控制台中查看您的数据


请仔细检查,服务器上是否存在“描述”,它可能是打字错误。比如“去刺激”之类的开始,而不是做

alert( "Data Loaded: " + data.description);
你应该试试

alert( "Data Loaded: " + data);
在这里,您正在打印服务器的输出,然后再访问数据中的任何内容

在访问数据中的属性之前,不要忘记将其转换为JSON


还要确保(就在从服务器发送之前),您正在从服务器发送正确的数据

数据是文本
如果数据是文本,它不会有一个名为
description
Do
console.log(JSON.stringify(data))
的属性,您在控制台中得到了什么?当我使用console.log(data)时,它返回[object object],那么我如何访问对象的属性description呢?当我使用console.log(JSON.stringify(data))时,控制台显示{},并且是空对象。我编辑了我的文章以显示来自服务器的代码。当I console.log(数据)时,控制台显示[object object],当I console.log(JSON.stringify(data))时,控制台显示{}和空对象。好的,这意味着您的服务器返回空对象。调查服务器端。对于Clearify,您可以将数据发送到服务器,但若要再次使用它进行“完成”回调,还需要从服务器重新发送数据。另外,您可以简单地使用$description而不是data.description,这将非常有效。我编辑了我的问题,以显示我在服务器上使用的代码。你可以快速看一看上面。是nodejs吗?看起来req.body是空的。是的,它是node.js,我安装了一个名为body parser的npm。应用程序应该这样使用它:app.use(bodyParser.json());那么我应该只使用res.json(req)吗?当我警告数据时,在将其转换为json后,它是一个空对象。我不明白。在$.post请求中,我将发送以下对象:{description:$description},其中包含数据。var$description包含来自html中输入字段的文本,因此所有数据都消失在哪里?返回.done函数的数据不是您提供的数据(如果您需要{description:$description})。这是来自服务器的回复数据,这就是为什么我说您也应该验证您的服务器