如何通过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
相关产品推荐
相关产品推荐

