Express js - 如何从ajax调用获得响应?

时间:2022-11-29 20:18:09

I am trying to send form data to server side using ajax (sending a username), and in the server side perform SQL query and pass back the result to my template (EJS).

我正在尝试使用ajax(发送用户名)将表单数据发送到服务器端,并在服务器端执行SQL查询并将结果传回我的模板(EJS)。

In my server side (ajaxTest.js)

在我的服务器端(ajaxTest.js)

router.post('/', function(req, res){
console.log(req.body);
var query = connection.query("select * from account where username='" + req.body.username+ "'",function  (err,result) {
    console.log(query.sql);
    if (err)   {
        console.error(err);
        return;
    }
    console.error(result);

    res.send("Result "+JSON.stringify(result));
});

});

});

In my template (ajaxTest.ejs)

在我的模板(ajaxTest.ejs)中

$(document).ready(function  () {
$("#submit").on("submit",function  (e) {
    e.preventDefault();
    data = {};
    data.username = 'user101'; 
    $.ajax({
        type: 'POST',
        data: JSON.stringify(data),
        contentType: 'application/json',
        url: 'http://localhost:3000/ajaxtest',
        success: function(data) {
            console.log('success');
            console.log(JSON.stringify(data));
        }
    });
})

});

});

In the above code, result is successfully logged onto my console, but the 'success' and data does not get returned. Is there a reason why result is not being sent back to the template (ajaxTest.ejs)?

在上面的代码中,结果已成功登录到我的控制台,但不会返回“成功”和数据。有没有理由不将结果发送回模板(ajaxTest.ejs)?

I'd greatly appreciate any feedback on the situation!

我非常感谢有关情况的任何反馈!

3 个解决方案

#1


1  

res.send("Result "+JSON.stringify(result));

sends not valid json.

发送无效的json。

Either use:

使用:

res.send(JSON.stringify(result));

or

要么

res.json(result);

#2


1  

Its because you are corrupting the syntax of JSON by prepending it with 'Result'.

这是因为你通过在'Result'前面加上JSON的语法来破坏它。

 res.send("Result "+JSON.stringify(result));

Instead do simple

相反,做简单

res.send(JSON.stringify(result));

#3


0  

Your front-end expects json data. Your back end should returned corresponding data too.

你的前端需要json数据。你的后端也应该返回相应的数据。

on your node.js, please change the return line from

在你的node.js上,请更改返回行

res.send("Result "+JSON.stringify(result));

to

res.status(201).json(result); // return status 201, and json data (do not stringify)

#1


1  

res.send("Result "+JSON.stringify(result));

sends not valid json.

发送无效的json。

Either use:

使用:

res.send(JSON.stringify(result));

or

要么

res.json(result);

#2


1  

Its because you are corrupting the syntax of JSON by prepending it with 'Result'.

这是因为你通过在'Result'前面加上JSON的语法来破坏它。

 res.send("Result "+JSON.stringify(result));

Instead do simple

相反,做简单

res.send(JSON.stringify(result));

#3


0  

Your front-end expects json data. Your back end should returned corresponding data too.

你的前端需要json数据。你的后端也应该返回相应的数据。

on your node.js, please change the return line from

在你的node.js上,请更改返回行

res.send("Result "+JSON.stringify(result));

to

res.status(201).json(result); // return status 201, and json data (do not stringify)