【问题标题】:Express js - How to get response from ajax call?Express js - 如何从 ajax 调用中获得响应?
【发布时间】:2016-07-11 00:04:40
【问题描述】:

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

在我的服务器端 (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));
});

});

在我的模板中 (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));
        }
    });
})

});

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

非常感谢您对此情况的任何反馈!

【问题讨论】:

  • 为什么不使用res.json(JSON.stringify(result))
  • @Aer0 我也试过 res.json,它也不起作用。这是取回成功数据的正确方法吗?

标签: ajax node.js express


【解决方案1】:
res.send("Result "+JSON.stringify(result));

发送无效的 json。

任意使用:

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

res.json(result);

【讨论】:

    【解决方案2】:

    这是因为您通过在 JSON 的前面加上“结果”来破坏它的语法。

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

    不如做简单的

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

    【讨论】:

      【解决方案3】:

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

      在您的 node.js 上,请从

      更改返回行
      res.send("Result "+JSON.stringify(result));
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-01
        • 1970-01-01
        • 2019-04-05
        • 1970-01-01
        • 2019-12-11
        • 1970-01-01
        • 2016-09-24
        • 1970-01-01
        相关资源
        最近更新 更多