gpt4 book ai didi

javascript - 在 NodeJS 中调用 POST 后 HTML 页面不会改变

转载 作者:搜寻专家 更新时间:2023-11-01 00:47:38 24 4
gpt4 key购买 nike

我是 Javascript 和 NodeJS 的新手。我正在使用登录按钮设置 super 简单的登录页面。当我单击该按钮时,它应该调用将调用 ajax POST 的 javascript 文件。一旦 POST 调用进入 express app.post,我可以看到它在代码块内传递,但我的 HTML 页面不会改变

我不确定这是 HTML 端、JS 端还是 NodeJS 端的问题。

Node 服务器:

app.get('/', function(request, response) {
console.log(request.url + " :: " + request.method);
response.sendFile(path.join(__dirname + '/pages/login.html'));
}.);

app.post('/auth', function(request, response) {
console.log(request.url + " :: " + request.method);
response.redirect('/home');
});

app.get('/home', function(request, response) {
console.log(request.url + " :: " + request.method);
response.sendFile(path.join(__dirname + '/pages/index.html'));
response.end();
});

登录.html :

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script src="js/login.js"></script>
<script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<title>Login Page</title>
</head>
<body>
<div class="login-page">
<div class="form">
<form class="login-form">
<input type="text" placeholder="username"/>
<input type="password" placeholder="password"/>
<button onclick="runAuth()">Login</button>
</form>
</div>
</div>
</body>
</html>

索引.html :

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Index Page</title>
</head>
<body>
Index
</body>
</html>

js/登录.js :

function runAuth() {

var postRun = $.ajax({
url: "/auth",
type: "POST",
body:
{
"data" : "Hello World"
},
dataType: "json",
cache: false,
contentType: "application/json",
});
}

当我点击按钮时,它会在控制台中显示

/ :: GET
/auth :: POST
/? :: GET
/home :: GET

好像又循环回到登录页面然后转到索引页面?我可以看到/auth 和/home 中的代码已执行,但我的浏览器屏幕仍然显示第一个登录 HTML 页面

最佳答案

解决方案:

由于您使用的是 AJAX 调用,因此您必须从您的前端更改 url。

window.location.href = response.url;

并且在您的服务器响应中,您必须传递准确的 url。

response.sendFile(path.join(__dirname + '/templates/views/dashboard.html'));

重要的是,您应该删除以下行,因为这会停止向用户发送响应。

response.end()

关于javascript - 在 NodeJS 中调用 POST 后 HTML 页面不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57336296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com