Javascript TypeError:无法读取属性';id';nodejs中未定义的

Javascript TypeError:无法读取属性';id';nodejs中未定义的,javascript,jquery,node.js,Javascript,Jquery,Node.js,我正在努力创建一个函数,根据文本框中输入的id从数据库中进行选择。我编写了代码,但它在控制台中显示了此错误,我无法解释原因:TypeError:cannotreadproperty'id'of undefined var bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({ extended: false })); 到目前为止,我掌握的代码是: 客户端: function select()

我正在努力创建一个函数,根据文本框中输入的id从数据库中进行选择。我编写了代码,但它在控制台中显示了此错误,我无法解释原因:
TypeError:cannotreadproperty'id'of undefined

var bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: false }));
到目前为止,我掌握的代码是:

客户端:

function select()
            {
                var id = $('#nr_reg').val();
                $.ajax({
                    type: 'post',
                    url: '/id',
                    data : {
                        id: id
                    },
                    succes: function(data){
                        var id = data.id;
                        alert(id);
                        $('#optic').val(id);
                    },
                    error: function(err){
                        console.log(err);
                    }

                }); 
            }
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',
                    dataType: 'json',
                    url: '/id',
                    data : {
                        id: id
                    },
                    success: function(data){    
                        data = JSON.parse(data);                    
                        var id = data.id;
                        alert("merge");
                        $('#optic').val(id);
                    },
                    error: function(err){
                        console.log(err);
                    }

                }); 
            }
服务器端:

function select()
            {
                var id = $('#nr_reg').val();
                $.ajax({
                    type: 'post',
                    url: '/id',
                    data : {
                        id: id
                    },
                    succes: function(data){
                        var id = data.id;
                        alert(id);
                        $('#optic').val(id);
                    },
                    error: function(err){
                        console.log(err);
                    }

                }); 
            }
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',
                    dataType: 'json',
                    url: '/id',
                    data : {
                        id: id
                    },
                    success: function(data){    
                        data = JSON.parse(data);                    
                        var id = data.id;
                        alert("merge");
                        $('#optic').val(id);
                    },
                    error: function(err){
                        console.log(err);
                    }

                }); 
            }
L.E: 功能选择:

function select()
            {
                var id = $('#nr_reg').val();
                $.ajax({
                    type: 'post',
                    url: '/id',
                    data : {
                        id: id
                    },
                    succes: function(data){
                        var id = data.id;
                        alert(id);
                        $('#optic').val(id);
                    },
                    error: function(err){
                        console.log(err);
                    }

                }); 
            }
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',
                    dataType: 'json',
                    url: '/id',
                    data : {
                        id: id
                    },
                    success: function(data){    
                        data = JSON.parse(data);                    
                        var id = data.id;
                        alert("merge");
                        $('#optic').val(id);
                    },
                    error: function(err){
                        console.log(err);
                    }

                }); 
            }

你说你的错误在服务器端?将正文分析器添加到express应用程序:

第一次安装主体解析器:

npm install body-parser -s
请在您的应用程序中包含以下内容:

var express = require('express');
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.post(/*....*/);
你的
app.post
必须在
app.use
行之后。
完整示例

顺便说一句,这是重复的,你说你的错误在服务器端?将正文分析器添加到express应用程序:

第一次安装主体解析器:

npm install body-parser -s
请在您的应用程序中包含以下内容:

var express = require('express');
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.post(/*....*/);
你的
app.post
必须在
app.use
行之后。
完整示例

顺便说一句,这是一个重复的请确保您已经
要求
d
正文解析器
。
并使用
bodyParser.urlencoded

var bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: false }));
这应该在
.post
路线定义之前

编辑:


在此之前,您必须执行
npm安装body parser
:)

确保您已经
要求
d
body parser
。 并使用
bodyParser.urlencoded

var bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: false }));
这应该在
.post
路线定义之前

编辑:



在此之前,您必须执行
npm安装body parser
:)

success
中添加
console.log(数据)
,并查看在console中得到了什么它没有输入
succes
,因为错误在服务器端。那么,您使用的是body parser中间件吗,否则您将无法在express上获得req.body。您使用的是哪个express版本?是的,我是@GonzaloBahamondez。TTushar-它在控制台中表示未定义。仅此而已。在
success
中添加
console.log(data)
并查看在控制台中得到了什么。它没有输入
succes
,因为错误在服务器端。那么,您使用的是body parser中间件吗,否则您将无法在express上获得req.body。您使用的是哪个express版本?是的,我是@GonzaloBahamondez。TTushar-它在控制台中表示未定义。就这些了。快车4或最新的怎么样?在Express4中没有“express.bodyParser”,仍然一样,您必须注册中间件来解析请求主体:
大多数中间件(如bodyParser)不再与Express4捆绑在一起,必须单独安装
。为什么?我有express.。至于express 4+
的body parser
是一个单独的模块。@DanielGruszczyk:O不是真的,您需要body parser模块。。。。express没有内置bodyParser,请看一下您发送给我的链接express 4或最新版本怎么样?在Express4中没有“express.bodyParser”,仍然一样,您必须注册中间件来解析请求主体:
大多数中间件(如bodyParser)不再与Express4捆绑在一起,必须单独安装
。为什么?我有express.。至于express 4+
的body parser
是一个单独的模块。@DanielGruszczyk:O不是真的,您需要body parser模块。。。。express没有内置bodyParser,请查看您发送给我的链接OK。这样就行了。它正确获取id,正确显示结果,但仍然没有在客户端输入
success
。为什么会这样?它没有显示错误。在控制台中,仅显示id和结果。但在客户端,我有一个id为的警报,现在显示出来了,仍然没有根据所选内容设置textbox的值。为什么?@Ezekiel mmm在你的客户端代码中,你有“succes”应该是“success”,我想没有?@Ezekiel:你能粘贴
success
回调中收到的
data
的值吗?你可能需要做
data=JSON.parse(data)成功回调中的第一个。您尚未在ajax调用中设置
数据类型
属性。确定。这样就行了。它正确获取id,正确显示结果,但仍然没有在客户端输入
success
。为什么会这样?它没有显示错误。在控制台中,仅显示id和结果。但在客户端,我有一个id为的警报,现在显示出来了,仍然没有根据所选内容设置textbox的值。为什么?@Ezekiel mmm在你的客户端代码中,你有“succes”应该是“success”,我想没有?@Ezekiel:你能粘贴
success
回调中收到的
data
的值吗?你可能需要做
data=JSON.parse(data)成功回调中的第一个。您尚未在ajax调用中设置
dataType
属性。