【发布时间】:2020-01-11 16:34:56
【问题描述】:
我正在使用 HTML、JQuery 和 NodeJS。我的问题是我正在尝试将 index.html 中的表单发布到 Node、进程(数据库等)、使用 JSON 响应 JQuery 并重定向。所以我想处理 json 响应并在不同的 HTML 页面(board.html)上查看它。
为此,我试图在两个 HTML 页面(index.html、board.html)上包含相同的 JS 文件,我从有效的索引发布数据,但在重定向到 board.html 之后,JS 不会加载board.html 上的内容:
我试过了
window.location.replace("/views/board.html");
$('#b-content').append("content...").after('topic: '+res.topic);
//index.js
$(document).ready(function() {
console.log("READY!")
$("form").submit(function(e) {
$(this).attr('action', 'api/board/:b')
$.ajax({
url: '/api/board/:b',
type: 'post',
dataType: 'json',
data: $('#main-form').serialize(),
success: function(res) {
window.location.replace("/views/board.html");
$('#b-content').append("content...").after('topic: '+res.topic);
$('#responses').append("topic: <h3>" + res.topic + "</h3>");
}
});
// e.preventDefault();
});
});
// 后端
app.route('/api/board/:b')
.post(function(req, res) {
compiledObject = {
board: req.body.board,
user: req.body.name,
topic: req.body.topic,
thread: req.body.thread
};
res.json(compiledObject);
})
// index.html 示例
<body>
<header>
<h1>
Anon Message Board
</h1>
</header>
<div id="form-div">
<form id="main-form" method="post" action="">
username:
<input type="text" placeholder="coolname" name="name"/><br>
<label for="general">General</label>
<input type="radio" name="topic" value="general"></span>
<label for="tech">Tech</label>
<input type="radio" name="topic" value="tech"><br>
board:
<input type="text" name="board" /><br>
message:
<textarea name="thread" ></textarea><br><br>
<input type="submit" value="submit"/>
</form>
</div>
<div id="responses">
<p id="res-name"></p>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="views/index.js"></script>
</body>
// board.html 示例
<body>
<h1>Board:</h1>
<div id="b-content">
<p>content ...</p>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="/views/index.js"></script>
</body>
....
我可以加载 board.html,但无法加载附加的元素。
【问题讨论】:
-
如果你重定向你不能对 DOM 做任何事情。所以替换后的行是没用的。您也没有取消表单提交。
标签: javascript jquery html node.js