Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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
如何使用fetch更新ejs文件?使用node.js和javascript_Javascript_Node.js_Ejs - Fatal编程技术网

如何使用fetch更新ejs文件?使用node.js和javascript

如何使用fetch更新ejs文件?使用node.js和javascript,javascript,node.js,ejs,Javascript,Node.js,Ejs,我正在尝试更新ejs文件。我试图做的只是用fetch发送的get请求中的数据更改h1标记中的文本。但什么也没发生。如果我在浏览器中键入url路径,一切正常,但是当使用fetch时,服务器获取数据,但页面上没有任何变化 我猜这与使用fetch方法有关?对吗?不能使用fetch吗?如果是的话,你怎么做呢 这是我的密码: Ejs: <input type="text" id="surveyName" placeholder="Name your survey"> <div id="a

我正在尝试更新ejs文件。我试图做的只是用fetch发送的get请求中的数据更改h1标记中的文本。但什么也没发生。如果我在浏览器中键入url路径,一切正常,但是当使用fetch时,服务器获取数据,但页面上没有任何变化

我猜这与使用fetch方法有关?对吗?不能使用fetch吗?如果是的话,你怎么做呢

这是我的密码:

Ejs:

<input type="text" id="surveyName" placeholder="Name your survey">
<div id="addQuiz" onclick="newQuiz()">Add</div>
<h1>Survey: <%= data.userQuery %></h1>
const newQuiz = () => {
    const name = document.getElementById("surveyName").value

    fetch(`/${name}`)
    .then((data) => {
        alert('sent!')
    })}
app.get("/:userQuery", (req, res) => { 
  console.log(req.params.userQuery)
  res.render('home',{data: {userQuery: req.params.userQuery}}) 
}); 
<input type="text" id="surveyName" placeholder="Name your survey">
<div id="addQuiz" onclick="newQuiz()">Add</div>
<h1 id="some_id">Survey: <%= data.userQuery %></h1>
const newQuiz = () => {
    const name = document.getElementById("surveyName").value;

    fetch(`/${name}`)
    .then((data) => {
        alert('sent!');
        document.querySelector("#some_id").innerHTML = data.userQuery;
    })}
app.get("/:userQuery", (req, res) => { 
    res.json({userQuery: req.params.userQuery});
}); 
节点中的路由:

<input type="text" id="surveyName" placeholder="Name your survey">
<div id="addQuiz" onclick="newQuiz()">Add</div>
<h1>Survey: <%= data.userQuery %></h1>
const newQuiz = () => {
    const name = document.getElementById("surveyName").value

    fetch(`/${name}`)
    .then((data) => {
        alert('sent!')
    })}
app.get("/:userQuery", (req, res) => { 
  console.log(req.params.userQuery)
  res.render('home',{data: {userQuery: req.params.userQuery}}) 
}); 
<input type="text" id="surveyName" placeholder="Name your survey">
<div id="addQuiz" onclick="newQuiz()">Add</div>
<h1 id="some_id">Survey: <%= data.userQuery %></h1>
const newQuiz = () => {
    const name = document.getElementById("surveyName").value;

    fetch(`/${name}`)
    .then((data) => {
        alert('sent!');
        document.querySelector("#some_id").innerHTML = data.userQuery;
    })}
app.get("/:userQuery", (req, res) => { 
    res.json({userQuery: req.params.userQuery});
}); 

如果希望将对HTTP请求的响应作为一个全新的页面加载,那么不要使用Ajax。Ajax的全部要点是,它使用JavaScript发出请求,并使JavaScript无需导航到新用途即可使用响应

改为使用常规HTML表单提交



如果您想使用Ajax,那么您需要使用a来处理响应主体,然后使用该数据来处理响应主体。如果您这样做,那么您可能会更好地向以JSON形式返回数据的端点发出请求,而不是向EJS模板中注入数据的端点发出请求。您可能需要阅读。

如果希望将HTTP请求的响应作为一个全新页面加载,则不要使用Ajax。Ajax的全部要点是,它使用JavaScript发出请求,并使JavaScript无需导航到新用途即可使用响应

改为使用常规HTML表单提交



如果您想使用Ajax,那么您需要使用a来处理响应主体,然后使用该数据来处理响应主体。如果您这样做,那么您可能会更好地向以JSON形式返回数据的端点发出请求,而不是向EJS模板中注入数据的端点发出请求。您可能需要阅读。

看看这是否适合您-
Ejs:

<input type="text" id="surveyName" placeholder="Name your survey">
<div id="addQuiz" onclick="newQuiz()">Add</div>
<h1>Survey: <%= data.userQuery %></h1>
const newQuiz = () => {
    const name = document.getElementById("surveyName").value

    fetch(`/${name}`)
    .then((data) => {
        alert('sent!')
    })}
app.get("/:userQuery", (req, res) => { 
  console.log(req.params.userQuery)
  res.render('home',{data: {userQuery: req.params.userQuery}}) 
}); 
<input type="text" id="surveyName" placeholder="Name your survey">
<div id="addQuiz" onclick="newQuiz()">Add</div>
<h1 id="some_id">Survey: <%= data.userQuery %></h1>
const newQuiz = () => {
    const name = document.getElementById("surveyName").value;

    fetch(`/${name}`)
    .then((data) => {
        alert('sent!');
        document.querySelector("#some_id").innerHTML = data.userQuery;
    })}
app.get("/:userQuery", (req, res) => { 
    res.json({userQuery: req.params.userQuery});
}); 
节点中的路由:

<input type="text" id="surveyName" placeholder="Name your survey">
<div id="addQuiz" onclick="newQuiz()">Add</div>
<h1>Survey: <%= data.userQuery %></h1>
const newQuiz = () => {
    const name = document.getElementById("surveyName").value

    fetch(`/${name}`)
    .then((data) => {
        alert('sent!')
    })}
app.get("/:userQuery", (req, res) => { 
  console.log(req.params.userQuery)
  res.render('home',{data: {userQuery: req.params.userQuery}}) 
}); 
<input type="text" id="surveyName" placeholder="Name your survey">
<div id="addQuiz" onclick="newQuiz()">Add</div>
<h1 id="some_id">Survey: <%= data.userQuery %></h1>
const newQuiz = () => {
    const name = document.getElementById("surveyName").value;

    fetch(`/${name}`)
    .then((data) => {
        alert('sent!');
        document.querySelector("#some_id").innerHTML = data.userQuery;
    })}
app.get("/:userQuery", (req, res) => { 
    res.json({userQuery: req.params.userQuery});
}); 

看看这是否对您有效-
Ejs:

<input type="text" id="surveyName" placeholder="Name your survey">
<div id="addQuiz" onclick="newQuiz()">Add</div>
<h1>Survey: <%= data.userQuery %></h1>
const newQuiz = () => {
    const name = document.getElementById("surveyName").value

    fetch(`/${name}`)
    .then((data) => {
        alert('sent!')
    })}
app.get("/:userQuery", (req, res) => { 
  console.log(req.params.userQuery)
  res.render('home',{data: {userQuery: req.params.userQuery}}) 
}); 
<input type="text" id="surveyName" placeholder="Name your survey">
<div id="addQuiz" onclick="newQuiz()">Add</div>
<h1 id="some_id">Survey: <%= data.userQuery %></h1>
const newQuiz = () => {
    const name = document.getElementById("surveyName").value;

    fetch(`/${name}`)
    .then((data) => {
        alert('sent!');
        document.querySelector("#some_id").innerHTML = data.userQuery;
    })}
app.get("/:userQuery", (req, res) => { 
    res.json({userQuery: req.params.userQuery});
}); 
节点中的路由:

<input type="text" id="surveyName" placeholder="Name your survey">
<div id="addQuiz" onclick="newQuiz()">Add</div>
<h1>Survey: <%= data.userQuery %></h1>
const newQuiz = () => {
    const name = document.getElementById("surveyName").value

    fetch(`/${name}`)
    .then((data) => {
        alert('sent!')
    })}
app.get("/:userQuery", (req, res) => { 
  console.log(req.params.userQuery)
  res.render('home',{data: {userQuery: req.params.userQuery}}) 
}); 
<input type="text" id="surveyName" placeholder="Name your survey">
<div id="addQuiz" onclick="newQuiz()">Add</div>
<h1 id="some_id">Survey: <%= data.userQuery %></h1>
const newQuiz = () => {
    const name = document.getElementById("surveyName").value;

    fetch(`/${name}`)
    .then((data) => {
        alert('sent!');
        document.querySelector("#some_id").innerHTML = data.userQuery;
    })}
app.get("/:userQuery", (req, res) => { 
    res.json({userQuery: req.params.userQuery});
}); 

…并且使用
div
而不是
按钮来创建一个旨在被单击以使事情发生的控件会导致各种可访问性问题…并且使用
div
而不是
按钮来创建一个旨在被单击以使事情发生的控件会导致各种各样的问题可访问性问题我理解,但我不想进入新页面,我只想更改同一页面上的h1标记,而不呈现新页面。这就是为什么我试着去拿。ejs只处理表单提交吗?您可以使用ejs生成对任何HTTP请求的响应。在处理Ajax时,它很少是一种好方法。因此,我说“更好”,而不是提出任何需要更改的建议。我理解,但我不想进入新页面,我只想更改同一页面上的h1标记,而不呈现新页面。这就是为什么我试着去拿。ejs只处理表单提交吗?您可以使用ejs生成对任何HTTP请求的响应。在处理Ajax时,它很少是一种好方法。因此,我说“过得更好”,而不是提出任何需要改变的建议。