You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AJAX将Node控制器的结果返回至应用程序?

如何通过AJAX将控制器结果返回至应用程序?

嘿,我看了你的控制器代码,发现核心问题是你没有把获取到的body[0]数据返回给客户端——你在request回调里定义了tt变量,但没通过res对象把它响应出去。先给你修正控制器代码,再给你写对应的AJAX调用示例:

第一步:修正你的控制器代码

module.exports.key_i = function(req, res, next) { 
  // console.log("We are here in webserver key_i"); 
  var k = req.body.KEY; 
  // console.log(k); 
  var requestOptions = { 
    url: 'http://localhost:3000/api/key_i', 
    method: 'POST', 
    json:{ key: k } 
  } 
  request(requestOptions, function(error, response, body) { 
    if (error) { 
      return res.status(500).send(error); 
    } 
    // 先做个兜底判断,避免body或body[0]不存在导致报错
    if (!body || !body[0]) {
      return res.status(404).send({ message: "未找到对应数据" });
    }
    var tt = { pp: body[0] }; 
    // 关键:把结果以JSON格式返回给客户端
    res.json(tt);
  }); 
}

第二步:用AJAX调用接口获取结果

下面给你两种常见的AJAX实现方式,选你项目里在用的就行:

1. 原生JavaScript AJAX

// 假设你通过按钮触发请求,先绑定点击事件
document.getElementById('query-btn').addEventListener('click', function() {
  // 可以从输入框获取KEY值,这里先写死示例
  const keyValue = "你的KEY值"; 
  
  const xhr = new XMLHttpRequest();
  xhr.open('POST', '/key_i', true); // 这里的路径要和控制器挂载的路由一致
  xhr.setRequestHeader('Content-Type', 'application/json');
  
  xhr.onload = function() {
    if (xhr.status >= 200 && xhr.status < 300) {
      // 请求成功,解析返回的结果
      const result = JSON.parse(xhr.responseText);
      console.log("拿到的结果:", result.pp);
      // 这里可以把结果渲染到页面上,比如:
      // document.getElementById('result-box').textContent = JSON.stringify(result.pp);
    } else {
      // 请求失败,处理错误
      console.error("请求出错:", xhr.responseText);
    }
  };
  
  xhr.onerror = function() {
    console.error("网络请求失败,请检查接口地址");
  };
  
  // 发送请求,传递KEY参数
  xhr.send(JSON.stringify({ KEY: keyValue }));
});

2. jQuery AJAX(如果你的项目用了jQuery)

// 绑定按钮点击事件
$('#query-btn').click(function() {
  const keyValue = "你的KEY值"; // 或者从输入框获取:$('#key-input').val()
  
  $.ajax({
    url: '/key_i', // 对应控制器的路由路径
    method: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({ KEY: keyValue }),
    success: function(result) {
      console.log("拿到的结果:", result.pp);
      // 渲染到页面的示例:
      // $('#result-box').text(JSON.stringify(result.pp));
    },
    error: function(xhr, status, error) {
      console.error("请求出错:", error);
    }
  });
});

几个注意点

  • 确保客户端AJAX请求的url和控制器挂载的路由完全匹配
  • 传递的参数名KEY要和控制器里req.body.KEY保持一致
  • 记得处理异常情况,比如后端返回404(没找到数据)或500(服务器错误)的场景,避免页面崩溃

内容的提问来源于stack exchange,提问作者Sarthak Agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:11:46