【问题标题】:GET json data with jquery ajax call to nodejs使用 jquery ajax 调用 nodejs 获取 json 数据
【发布时间】:2018-09-27 07:55:02
【问题描述】:

我正在使用 JSON 格式的 Nodejs res.end() 发送数据,并且我还将标头设置为 application/json,但我没有在 jquery ajax 调用的成功函数中获取数据,而是得到了数据直接以 JSON 格式,但我希望它出现在 jquery ajax 调用的成功函数中,因为我必须在数据表中显示它们。我什至尝试了 res.render() 和 res.send() 但无法得到它。请帮忙!!

Nodejs 代码

router.get('/user_list',(req,res,next)=>{
   let new_password = generator.generate({
        length: 16,
        numbers: true,
        symbols: true,
        uppercase: true,
        strict: true,
        exclude: ["(",")","[","]",":","-",",","{","}","<",">",".","^","/"]
      });
  connection.query("update user, client set user.status = client.status where user.client_id = client.id",(error,result)=>{
    if(error){
      console.log(error);
    }else{
      connection.query('select user.username,user.email,user.msg_id,user.status,system.name from user inner join system on user.system_id = system.id; select id, name from client;',(error,result)=>{
        if(error){
          console.log(error);
        }else{
          let value = {values: result,new_password};
          //res.json(value);
         // res.render('user_list', {user_data: value});
          res.writeHead(200, { 'Content-Type': 'application/json' });res.end(JSON.stringify(value));
        }
      })
    }
  })
})

JQuery 代码

$(document).ready(function(){
      $.ajax({
        url:'user_list',
        type:'GET',
        //dataSrc: 'user_list',
        datatype:'json',
        success: function(data){
          console.log(data);
          $('#example').dataTable({
            data:data,
            columns: [
              {data:'values[0][1].username'},
              {data:'values[0][1].name'},
              {data:'values[0][1].email'},
              {data:'values[0][1].msg_id'},
            ]
          });
        }
      });
    });

【问题讨论】:

  • 1.永远不要出于明显的原因将代码发布为图像 2. 只需使用 res.send(some_object) 并 express 将适当地设置标题 3. but i am not getting the data in the success function of jquery ajax call, instead i am getting the data directly in json format 什么?这是两件不相关的事情。
  • 我试过 res.send() 但我无法在 jquery ajax 调用的成功函数中得到响应。@ChrisG
  • 控制台有错误吗?请注意,由于这是一个 GET 请求并且您没有任何参数,您只需在浏览器中转到 localhost:3000/user_list,您应该会看到 JSON。那样有用吗?另外,请编辑您的问题,使其包含实际代码,否则此问题可能会被关闭。
  • 控制台没有错误,我也在浏览器中以这种方式得到响应,但我不希望这样,我希望它在成功函数中,以便我在数据表中填充数据。@克里斯格
  • 但是你在成功函数中得到了它。 console.log(data)里面成功函数!我开始认为这与ajax 没有任何关系 只是关于.dataTable() 调用。当数据记录在控制台时,它只是一个长字符串吗?

标签: javascript jquery node.js ajax


【解决方案1】:

请试试这个,以便我们缩小问题范围:

router.get('/user_list', function (req, res) {
    const list = [
        { id: 0, name: "Alice"},
        { id: 1, name: "Bob"}
    ];
    res.send(list);
});

在您的索引/脚本中:

$(document).ready(function () {
    $.getJSON('user_list').then(res => {
        console.log(res);
    });
});

这应该在控制台中显示数组。

【讨论】:

  • 我评论了所有内容,只是使用了您的代码,但仍然在浏览器中得到响应,这也没有在控制台中打印任何内容。回复截图:imgur.com/a/Lqp9JoF
  • 好的,现在转到包含 jQuery 代码 ($.getJSON) 的页面并检查浏览器控制台。 (另外,当您通过地址栏访问/user_list 时,显然只看到 JSON 应该发生的事情......;我们正在对您的代码进行故障排除,并且刚刚成功排除了后端作为问题的根源)
  • 我已经在上面的评论中发布了一个 url,其中包含输出的屏幕截图。如果这就是它应该如何工作,那么我应该如何进行 ajax 调用并在前端获取数据并显示它?
  • 那只是为了检查后端是否正常工作。下一步是通过 AJAX 发出相同的请求。
  • 是的,起初当我发布问题时,我正在对后端进行 ajax 调用并在浏览器中接收数据,而不是在成功函数中。
猜你喜欢
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多