[英]Query parameters are lost from POST request (nodeJS & Express)
我第一次嘗試使用 REST API 使 JavaScript 客戶端和 nodeJS 服務器與 Express 進行通信。出於某種原因,我在xhttp.send
中提供的任何參數在到達后端時都會丟失。
在客戶端,我有以下 function:
function changeStatus(station) {
var xhttp = new XMLHttpRequest();
xhttp.open("POST", "/api", false);
xhttp.send(`station=${station}`);
window.location.reload();
}
在服務器端如下:
app.post("/api", function (req, res) {
if ("station" in req.query) {
db[req.query.station] = !db[req.query.station];
res.send(
`Station ${req.query.station} changed to ${db[req.query.station]}`
);
} else {
res.send("No station specified");
}
});
無論如何,我得到了“其他”配置。 關於做什么的任何建議? 我也不知道如何記錄要附加的原始請求。
查詢參數不會丟失。 它們不存在。 查詢參數 go 在 URL 之后?
在路徑段之后。
http://example.com?this=is&a=set&of=query¶meters=!
當您發出 POST 請求時,您傳遞給send()
的值將在請求正文中發送,如果(根據文檔)您設置了合適的正文解析中間件,則可以通過req.body
訪問該正文。
您還應該設置一個Content-Type
請求 header 來告訴服務器如何解析您發送的正文。 如果您傳遞URLSearchParams
object 而不是字符串, XMLHttpRequest
將自動執行此操作。
客戶端代碼
var xhttp = new XMLHttpRequest();
xhttp.open("POST", "/api", false);
const body = new URLSearchParams();
body.append("station", station);
xhttp.send(body);
window.location.reload();
服務器端代碼
app.use(express.urlencoded());
app.post("/api", function (req, res) {
if ("station" in req.body) {
綜上所述,您正在發出 Ajax 請求,然后立即重新加載頁面。
Ajax 的要點是在不重新加載頁面的情況下發出請求。
您也可以改用常規<form>
提交。 這會更簡單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.