【问题标题】:JSON data not showing the correct informationJSON 数据未显示正确信息
【发布时间】:2015-09-22 12:58:12
【问题描述】:

我正在尝试创建一个从服务器端的数据库中选择数据并将其设置为客户端文本框的值的函数。它在服务器端工作正常,但在客户端,如果我提醒数据,它会显示[oject Object],而对于 data.id,它会显示undefined,我不知道为什么。非常感谢!

服务器端:

app.post('/id', function(req,res) {

    var data = req.body;
    var id = data.id;
    console.log(id);
    var query = "SELECT * FROM Control WHERE id=" +id;
    connection.query(query, function(error, result) {
            console.log(result);
            res.send(result);
    });
});

客户端:

function select()
            {
                var id = $('#nr_reg').val();
                $.ajax({
                    type: 'post',
                    data: JSON.stringify(data),
                    dataType: 'json',
                    url: '/id',
                    data : {
                        id: id
                    },

                    success : function(data){           
                        alert(data);                          
                        var id = data.id;
                        $('#optic').val(id);

                    },
                    error: function(err){
                        console.log(err);
                    }

                }); 
            }

【问题讨论】:

  • 浏览器开发工具中的响应数据是什么样的?您应该能够看到那里的结构。
  • 如果您在一个对象上alert,它将始终显示[object] - 使用console.log(data) 或(更好)console.dir(data)
  • 最好转到文档并检查文档以获取解决方案。

标签: javascript jquery json node.js


【解决方案1】:

这里的情况是,两个data互不相同。

//input for ajax page
data : {
    id: id
}

//output from ajax page
success:function(data)

第一个是通过url: '/id' 传递的值,第二个代表作为 AJAX 调用的结果从服务器返回的值。

这意味着,您可以为函数参数指定任何名称,例如 success:function( value )

【讨论】:

  • 如果我把值放在括号内,它会显示object HTMLInputElement]
  • @Ezekiel 你在成功函数中得到的是服务器的返回值。
  • ID 为[ { id: 10, data: '', kw: '11', nr_articol: '279630-99', proiect: 'AUHE', optic: '2037', electric: '', reelectric: '', smd: 'on', scurt_smd: '1', incomplete_smd: '', bile: '',} ] 的行中数据库中的所有列
  • @Ezekiel 在success函数中做console.log(data),并在开发者工具控制台中查看输出。
  • 返回的是一个数组?如果是,正确的应该是var id = data[0].id;
【解决方案2】:

当您获取这些数据而不是警报时,请使用 console.log(data)。 还有一件事,如果你想知道你反对有没有那个 id 只需将这些数据作为 JSON.stringify(data) 传递。然后使用控制台日志打印这些数据。看看它包含什么。 然后你就可以轻松解决你的问题了。

【讨论】:

  • 我这样做了。它说undefined
  • 你做了什么,清楚意味着你像这样传递这些数据 console.log(JSON.stringify(data));如果您的数据以对象的形式出现,那么这就是您可以在控制台中检查或打印的方式,您的对象包含哪些字段。控制台.log(JSON.stringify(数据));并检查开发者工具控制台,你得到了什么。@Ezekiel
  • 如果您的数据以 String 形式出现,那么您必须使用 var dataObject=JSON.parse(data); 将该值形成为 Object然后使用 var id=dataObject.id;希望这会奏效。 @以西结
猜你喜欢
  • 1970-01-01
  • 2018-03-18
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多