我有这个 api 路由设置,如果我手动在浏览器中输入 /api ,它会从我的 staff.json 文件返回数据:
var express = require('express');
var router = express.Router();
var staffData = require('../data/staff.json')
router.get('/api', function(req, res){
res.json(staffData);
});
module.exports = router;
但是,当我尝试使用此功能使其在我的一个视图中工作时:
$('#search').click(function(){
$.getJSON('api', function(key,val){
var search = $('#search').val();
var regex = new RegExp('search', 'i');
var output;
$.each(staffData, function(key, val){
if(val.name.search(regex) != -1 || val.email.search(regex)){
output += "<tr>";
output += "<td id='"+key+"'>"+val.name+"</td>";
output += "<td id='"+key+"'>"+val.email+"</td>";
output += "</tr>";
}
});
$('tbody').html(output);
console.log(output);
});
});
我不断收到错误消息,提示没有定义 staffData,尽管它已在我的 api 路由中明确定义并返回。
谁能解释一下可能是什么问题?
问候
当您尝试从 api 获取响应时,响应将作为回调函数中的参数返回。如果你想使用'staffData'变量,你需要像下面的函数一样在回调中使用它。请使用以下代码。
$('#search').click(function(){
$.getJSON('/api', function(staffData){
var search = $('#search').val();
var regex = new RegExp('search', 'i');
var output;
$.each(staffData, function(key, val){
if(val.name.search(regex) != -1 || val.email.search(regex)){
output += "<tr>";
output += "<td id='"+key+"'>"+val.name+"</td>";
output += "<td id='"+key+"'>"+val.email+"</td>";
output += "</tr>";
}
});
$('tbody').html(output);
console.log(output);
});
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句