Javascript API路由不返回数据

Javascript API路由不返回数据,javascript,json,node.js,ajax,express,Javascript,Json,Node.js,Ajax,Express,我已设置了此api路由,如果我在浏览器中手动键入/api,它将从staff.json文件返回数据: var express=require('express'); var router=express.router(); var staffData=require(“../data/staff.json”) router.get('/api',函数(req,res){ res.json(staffData); }); module.exports=路由器因为您正在返回res.json(staf

我已设置了此api路由,如果我在浏览器中手动键入/api,它将从staff.json文件返回数据:

var express=require('express');
var router=express.router();
var staffData=require(“../data/staff.json”)
router.get('/api',函数(req,res){
res.json(staffData);
});

module.exports=路由器因为您正在返回res.json(staffData)并且不呈现视图本身,我假设您只是使用API以JSON格式访问数据本身。因此,考虑到这一点,可以在
$.getJSON
调用中的
参数中访问API返回的信息,正如您在。Node.js 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);
});
$(“#搜索”)。单击(函数(){
$.getJSON('/api',函数(staffData){
var search=$('#search').val();
var regex=new RegExp('search','i');
var输出;
$。每个(staffData,函数(key,val){
if(val.name.search(regex)!=-1 | | val.email.search(regex)){
输出+=“”;
输出+=“”+val.name+“”;
输出+=“”+val.email+“”;
输出+=“”;
}
});
$('tbody').html(输出);
控制台日志(输出);
});
}))