Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有一种方法可以将参数传递给节点JS提供服务的html文件?_Javascript_Node.js_Json_Express - Fatal编程技术网

Javascript 有没有一种方法可以将参数传递给节点JS提供服务的html文件?

Javascript 有没有一种方法可以将参数传递给节点JS提供服务的html文件?,javascript,node.js,json,express,Javascript,Node.js,Json,Express,我使用NodeJS和Express编写了一个API,我有一个json文件,其中包含150个对象的数组。发送整个json的API代码如下所示: app.get("/api/pokemons", function (req, res) { res.setHeader("Content-Type", "application/json"); let rawdata = fs.readFileSync("assets/poke

我使用NodeJS和Express编写了一个API,我有一个json文件,其中包含150个对象的数组。发送整个json的API代码如下所示:

app.get("/api/pokemons", function (req, res) {
  res.setHeader("Content-Type", "application/json");
  let rawdata = fs.readFileSync("assets/pokemons.json");
  let pokemons = JSON.parse(rawdata);
  res.send(pokemons);
});
当我在HTML文件中获取该代码时,该代码非常有效:

    var parentDOM = document.getElementById("test");
    
    fetch("http://localhost:8000/api/pokemons")
      .then((response) => response.json())
      .then((data) => 
      {
        //console.log(data)
        data.forEach(element => 
        parentDOM.innerHTML += "Pokemon: "+element.name+" ID: " +element.id +"</br>"
        );

      });
var parentDOM=document.getElementById(“测试”);
取回(“http://localhost:8000/api/pokemons")
.then((response)=>response.json())
。然后((数据)=>
{
//console.log(数据)
data.forEach(元素=>
parentDOM.innerHTML+=“口袋妖怪:+element.name+”ID:+element.ID+”
“ ); });
但我正在寻找一种方法,一次只获取一个ID,并将其发送到客户端的一个设计好的HTML文件中,因为我有151个对象。我想要一个文件,比如pokemon.html,并使用浏览器访问ID——例如,当我转到http://localhost:8000/api/pokemon.html/2

为了从json文件中获取所有的对象,我使用了纯JS,而且效果很好。有没有办法将参数传递给HTML文件,这样我就可以检查ID并获取特定的json对象


谢谢大家!

是的,您可以在url中定义参数

app.get("/api/pokemons/:id", function (req, res) {
  res.setHeader("Content-Type", "application/json");
  let rawdata = fs.readFileSync("assets/pokemons.json");
  let pokemons = JSON.parse(rawdata);
  pokemons.filter(x=> x.id == req.params.id)
  res.send(pokemons);
});
编辑:我想我理解错了在html文件中读取参数的问题 如果你有一个url,你可以这样做
http://localhost:8000/api/pokemon.html?id=2

const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
urlParams.get('id')//will return 2
如果url是这样的,并且您的
http://localhost:8000/api/pokemon.html/2
你可以分开

const queryString = window.location.href
let parts = queryString.split('/')
let id = parts[parts.length-1]

是否希望Node.js应用程序为HTML文件提供在标记中某处插入ID的服务?您可以使用类似于
location.href.split('/').pop()的内容从前端js获取URL中的ID,或者在后端使用HTML模板,在注入ID以便在前端随时可用的地方,听起来更像是要向API发送ID。这在大多数ExpressJS教程中都有介绍。不相关,但您可能不想在每个请求中读取JSON文件。@MattHamann-是的,这正是我想要的-但我不希望Node.js应用程序执行此操作,我希望用户将请求发送到API,然后获取特定的JSON对象。我只是不希望服务器这样做,我希望一切都在客户端,我需要制作一个HTML文件,以按ID打印口袋妖怪。@DaveNewton谢谢你的回答,但这不是我的意思。我希望有一个静态HTML文件,并能够向其发送一个参数,然后使用从客户端获得的参数从API获取对象。可能吗?希望我说得够清楚。谢谢你,但我不是这个意思。我知道如何获取特定对象,但我希望HTML文件能够显示它。我有一个名为“pokemon.HTML”的HTML文件,我希望它能得到一个参数——我希望它每次都能获取新对象。就像我在PHP中做的那样-$_GET@OrNakash更新答案:你太棒了!成功了。这正是我所需要的,但有没有一种方法可以把它缩短,例如:不写id等?如果你不知道是什么参数,但如果你知道结尾总是你想要的数字,你可以像别人建议的那样拆分,有没有办法消除添加.HTML的需要?我只有2个文件,我想让它自动知道我只提供html文件