Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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 如何在后端express函数中访问当前url中的参数?(见说明)_Javascript_Node.js_Express_Backend_Ejs - Fatal编程技术网

Javascript 如何在后端express函数中访问当前url中的参数?(见说明)

Javascript 如何在后端express函数中访问当前url中的参数?(见说明),javascript,node.js,express,backend,ejs,Javascript,Node.js,Express,Backend,Ejs,好吧,我不知道该怎么解释。基本上,我正在编写一个简单的express应用程序,请求omdb api搜索电影标题并返回结果。现在,omdb api以页面形式发回结果,每页10个结果 这是我的app.js文件 let express = require("express"); let app = express(); let request = require("request"); app.set("view engine", "ejs"); let query = ""; let page

好吧,我不知道该怎么解释。基本上,我正在编写一个简单的express应用程序,请求omdb api搜索电影标题并返回结果。现在,omdb api以页面形式发回结果,每页10个结果

这是我的app.js文件

let express = require("express");
let app = express();
let request = require("request");

app.set("view engine", "ejs");

let query = "";
let page = 1;

app.get("/", (req, res) => {
    res.render("search");
});

app.get("/results", (req, res) => {
    if(req.query.search){
        query = req.query.search;
    }
    if(req.query.page){
        page = req.query.page;
    }else{
        page = 1;
    }
    console.log(query);
    console.log(page);
    let url = "http://omdbapi.com/?apikey=thewdb&s=" + query + "&page=" + page;
    request(url, (error, response, body) => {
        if(!error && response.statusCode == 200){
            let data = JSON.parse(body);
            res.render("results", {data: data});
        }
    });
});

app.listen(process.env.PORT, process.env.IP, () => {
    console.log("Server Started");
});
这是我的search.ejs文件

<h1>Search for a Movie</h1>

<form action="/results" method="GET">
    <input type="text" placeholder="search term" name="search">
    <input type="submit">
</form>
搜索电影
这是我的results.ejs文件

<h1>Results of Search</h1>

<ul>
    <% data["Search"].forEach((movie) => { %>
        <li> 
            <strong><%= movie["Title"] %></strong> - <%= movie["Year"] %> 
        </li>
    <% }); %>
</ul>

<form action="/results" method=GET>
    <input type="text" name="page" placeholder="Page">
    <input type="submit">
</form>

<a href="/">Search Again</a>
搜索结果
    { %>
  • -
用户可以在结果页中键入页码并转到下一页。但是,当我发回页码时,搜索查询将丢失。现在,我的解决方案是定义一个全局变量并像那样跟踪查询,但有没有合适的方法

我最近开始学习后端开发,所以我对表示和节点非常陌生

现在我的解决方案是定义一个全局变量并像这样跟踪查询

不要那样做

你将获得比赛条件,以及交叉用户污染


只需将查询放入表单中

<input type="hidden" name="query" value="...">


这就是我从/search页面内部调用/results函数的时候。如果我在提交页码时从结果页面内部调用/results函数,那么我就没有任何搜索查询。但是我如何从结果页面内部访问搜索查询的值,并将其作为隐藏表单的值输入?方法与您所说的相同ess
data[“Search”]
So data[“Search”]来自omdb api发送回来的json数据。但搜索查询指的是用户在搜索页面上输入的搜索词。此链接用于omdb返回的json数据,这是数据[“Search”]来自。但我想要的是用户在搜索页面中输入的原始搜索词。@abdullahaquarius-无论数据在哪里[“搜索”]来自。您的服务器端代码中有一个变量。您用它呈现了模板。您的查询的服务器端代码中已经有一个变量。也用它呈现模板。