![](/img/trans.png)
[英]How do I pass form data from one HTML page to another HTML page using ONLY javascript?
[英]How do I store data from form and display it on a new page using javascript?
我需要制作一個包含 2 個輸入字段的表單。 當您按下提交時,它應該將您帶到一個新頁面並顯示輸入數據。
這是我的 html 代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Film survey</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<form id="form" action="./Success.html">
<h1>Movie survey</h1>
<p>Thank you for participating in the film festival!</p>
<p>Please fill out this short survey so we can record your feedback</p>
<div>
<label for="film">What film did you watch?</label>
</div>
<div>
<input type="text" id="film" name="film" required />
</div>
<div>
<label for="rating"
>How would you rate the film? (1 - very bad, 5 - very good)
</label>
</div>
<input type="text" id="rating" name="rating" required />
<div><button class="submit">Submit</button></div>
</form>
<script src="script.js"></script>
</body>
</html>
這是我的js代碼
const formEl = document.querySelector("#form");
formEl.addEventListener("submit", (event) => {
event.preventDefault();
const formData = new FormData(formEl);
fetch("https://reqres.in/api/form", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
film: formData.get("film"),
rating: formData.get("rating"),
}),
})
.then((response) => {
window.location.href = "./Success.html";
})
.catch((error) => {
console.error(error);
});
});
我有第二個 html 頁面,名為 Success.html,我想顯示表單中給出的數據。 我需要模擬 API 所以我嘗試使用 reqres。
這是我的 Success.html 頁面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Success</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<h1>Thank you for your feedback!</h1>
<p>You watched: <span id="film"></span></p>
<p>You rated it: <span id="rating"></span></p>
<script>
const formData = JSON.parse(request.body);
const filmEl = document.querySelector("#film");
const ratingEl = document.querySelector("#rating");
filmEl.textContent = formData.film;
ratingEl.textContent = formData.rating;
</script>
</body>
</html>
我認為這會起作用,但在按提交后出現此錯誤:
`` Success.html:16 Uncaught ReferenceError: request is not defined at Success.html:16:35
該行const formData = JSON.parse(request.body);
在你的success.html
試圖引用一個名為request
的變量,它沒有在它包含的<script>
標簽的 scope 中定義 - 這就是你得到ReferenceError: request is not defined
錯誤的原因。
This other Stackoverflow question seems similar to yours - I have linked you to an answer that I think would help. 簡而言之,您可以從response
中提取您關心的值,然后通過查詢參數傳遞它們以顯示在您的success.html
中。
按照同樣的思路,您的模擬 API 用 302 狀態代碼和位置 header 進行響應可能是有意義的,包括指向您的成功頁面的電影和評級查詢參數。
您可以通過多種方式在 web 頁之間傳遞數據,以 JSON data { foo: 'bar' }
為例:
1.使用URL參數:
'data=' + encodeURIComponent(JSON.stringify(data))
,結果為data=%7B%20foo%3A%20'bar'%20%7D
2.使用瀏覽器本地存儲:
localStorage.setItem('myFormData', JSON.stringify(data));
let data = JSON.parse(localStorage.getItem('myFormData');
(您可能想添加一些錯誤處理)3.臨時POST數據
/success
列出之后,為什么不在表單頁面本身中顯示內容呢? 您可以使用本機 JavaScript 或 jQuery 輕松更新 DOM。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.