在node.js服务器上使用AJAX调用永久更改html文件
如何编写脚本,在对node.js服务器进行ajax调用后永久更改静态html文件?任何例子都将不胜感激:)直接通过node编辑文件可能会非常糟糕,我甚至不知道这是否可行。我认为更好的解决方案是让您的节点服务器可以访问您想要更改的数据,然后在实际加载HTML文件时使用jQuery或Angular更新该文件。在node.js服务器上使用AJAX调用永久更改html文件,ajax,node.js,Ajax,Node.js,如何编写脚本,在对node.js服务器进行ajax调用后永久更改静态html文件?任何例子都将不胜感激:)直接通过node编辑文件可能会非常糟糕,我甚至不知道这是否可行。我认为更好的解决方案是让您的节点服务器可以访问您想要更改的数据,然后在实际加载HTML文件时使用jQuery或Angular更新该文件。 另一种方法是使用模板引擎,如,然后直接通过节点提供文件,这样您每次都可以更改节点应用程序本身中的数据。我同意NikxDa的观点,这可能不是您的最佳解决方案,但这段代码应该可以做到这一点 /wr
另一种方法是使用模板引擎,如,然后直接通过节点提供文件,这样您每次都可以更改节点应用程序本身中的数据。我同意NikxDa的观点,这可能不是您的最佳解决方案,但这段代码应该可以做到这一点 /write.js /index.html
不,或者更好,取决于你如何看待它。后一个选项不使用HTML文件,而是使用您必须通过node.js提供的EJS文件。因此,如果您更新该值并将其保存在某个位置,例如数据库,则浏览器的最终HTML输出将永久更改。你到底想达到什么目的?谢谢!!实际上,我自己解决了这个问题,使用fs.writeFile(…)方法重写了我的整个html文件,不过还是要谢谢你!如果我之前看到您使用fs模块,这也可以工作,并且可以为我节省数小时的时间:D
var http = require('http');
var fs = require('fs');
var url = require('url');
//Lets define a port we want to listen to
const PORT=8080;
function handleRequest(request, response){
var path = url.parse(request.url).pathname;
if(path=="/write"){
fs.appendFile('message.html', 'Node.js!', function (err) {
if (err) throw err;
console.log('It\'s saved!');
});
} else {
fs.readFile('index.html',function (err, data){
response.writeHead(200, {'Content-Type': 'text/html','Content-Length':data.length});
response.write(data);
response.end();
});
}
}
// Create a server.
var server = http.createServer(handleRequest);
server.listen(PORT, function(){
console.log("Server listening on: http://localhost:%s", PORT);
});
<!DOCTYPE html>
<head>
<script>
function writeIt()
{
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","http://localhost:8080/write", true);
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
string=xmlhttp.responseText;
document.write(string + ": Saved change to message.html");
}
}
xmlhttp.send();
}
</script>
</head>
<body>
<p>Click the button to send an AJAX request to `write.js`<p>
<br><button onclick="writeIt()">Click Me</button>
</body>
Node.js!