Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I'm struggling to make a function which selects from database based on the id entered in a textbox. I wrote the code, but it shows in console this error and I can't figure why: TypeError: Cannot read property 'id' of undefined .

Code I have so far:

Client-side:

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);

Server-side:

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:

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);
                So, you are using body parser middleware? , otherwise you will never get req.body on express.
– Gonzalo Bahamondez
                Sep 22, 2015 at 11:29
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));

This should be before your .post route definition.

EDIT:

Before all this, you must do npm install body-parser :)

Ok. This way it works. It gets the id correctly, show the result correctly, but still not entering succes in client-side. Why is that anymore? – Ezekiel Sep 22, 2015 at 11:39 It shows no error. In console shows only the id and the result. But in client-side I have an alert with the id, and it is now showed and still not setting the value of textbox based on what selected. Why? – Ezekiel Sep 22, 2015 at 11:41 @Ezekiel mmm in your client side code, you have "succes" should be "success" i think no? – Gonzalo Bahamondez Sep 22, 2015 at 11:43 You might have to do data = JSON.parse(data); first in your success callback. You have not set the dataType property in your ajax call. – AdityaParab Sep 22, 2015 at 11:45

You said your error is on server side? Add a body parser to your express app:

1st Install body-parser:

npm install body-parser -s

The include this in your app:

var express = require('express');
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.post(/*....*/);

Your app.post must be AFTER app.use line.
Full example here
BTW this is a duplicate of this

Still the same, you have to register middleware to parse the request body: expressjs.com/4x/api.html#req.body – Daniel Gruszczyk Sep 22, 2015 at 11:34 Most middleware (like bodyParser) is no longer bundled with Express and must be installed separately . Why? I have express .. – Ezekiel Sep 22, 2015 at 11:35 @DanielGruszczyk :O Not true you need require bodyParser module .... there's not bodyParser built in with express, take a look the link that you sent me – Gonzalo Bahamondez Sep 22, 2015 at 11:35

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.