skip to Main Content

I am struggling with understanding what causes my script(s) to not add data that I send with ajax request. Instead of data that I pass it adds " " (obviously because it cannot parse the body for some reason)

What may cause this problem?

Server side:

router.post('/v2', async (req, res) => {
    console.log(req.body)
    const person = new Person({
        firstName: req.body.firstName || ' ',
        secondName: req.body.secondName || ' '
    })
    try {
        const newPerson = await person.save()
        res.status(201).json({ message: { id: newPerson._id } })
    } catch (error) {
        res.status(400).json({ message: error.message })
    }
})

Ajax request:

function addUserToDB(data) {
    const promisedResponse = v2Request(data);
    promisedResponse.done(function (data) {
        console.log(data.message.id)
    });
    

    function v2Request(data) {
        return $.ajax({
            type: "post",
            headers: {
                "Accept": "application/json; odata=verbose"
              },
            url: "URL/v2",
            data: data,
            processData: false,
            dataType: "json"
        });
    }
    
}

Code works fine as it returns correct response, but still with " " data added to db.
enter image description here

What’s the problem?

Thanks ahead!

P.S. data -> Object generated by class

2

Answers


  1. Chosen as BEST ANSWER

    I found the answer to my problem to be:

    headers: {
        "Content-type": "application/json"
    },
    
    data: JSON.stringify(data)
    

  2. You can try like this:

    Server Side:

    router.post('/v2', async (req, res) => {
        
        if (!req.body) {
            res.status(400).json({ message: "Data not found" })
            return;
        }
    
        console.log(req.body)
    
        const person = new Person({
            firstName: req.body.firstName,
            secondName: req.body.secondName
        })
    
        try {
            await person.save()
            res.status(201).json({ message: "Data stored successfully" })
    
        } catch (error) {
            res.status(500).json({ message: "Internal server error" })
        }
    })
    

    Ajax Request

    function addUserToDB() {
        $.ajax({
            method: 'POST',
            url: 'URL/v2',
            headers: { "Accept": "application/json; odata=verbose" },
    
            data: { firstName, secondName },
    
            success: function (result, stat, xhr) {
                console.log(xhr.responseJSON)
            },
    
            error: function (xhr, status, error) {
    
                console.log(xhr.responseJSON)
            }
        })
    }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search