[英]How to make a POST request instead of GET when Ok is clicked in Confirmation Popup (Node, Express, Jade)
我有一個使用 Jade 模板的帶有行和列的網頁渲染表。 當我在確認框中單擊“確定”進行刪除時,我需要發出 POST 請求。
現在可以使用“取消”和“確定”按鈕創建刪除確認彈出窗口。
“取消”按預期關閉確認框。 但是選擇“確定”會導航並顯示信息(實際上是 GET 請求)。 每當點擊“確定”時,它應該發出一個 POST 請求,而不是 GET 請求。
我怎樣才能使它成為一個 POST 請求?
刪除按鈕的代碼,
a.btn.btn-default(href='/removepage/'+value.PLANT+'/'+value.MATERIAL+'/'+value.CUSTOMER+'/'+value.RATE+'/'+value.CURRENCY+'/'+value.PRICE_UNIT+'/'+value.COND_UNIT+'/'+value.PORTAL_USER, onClick="return confirm('Are you sure to delete?')") Delete
GET 請求的代碼,
router.get('/removepage/:PLANT/:MATERIAL/:CUSTOMER/:RATE/:CURRENCY/:PRICE_UNIT/:COND_UNIT/:PORTAL_USER', (req, res) => {
console.log("Render check");
// console.log(req.params)
res.render('removepage',
{ title: 'Delete Page - Are you sure to delete?', plant: req.params.PLANT, material: req.params.MATERIAL,
currency: req.params.CURRENCY, rate: req.params.RATE, price_unit: req.params.PRICE_UNIT,
cond_unit: req.params.COND_UNIT, customer: req.params.CUSTOMER, portal_user: req.params.PORTAL_USER});
});
POST 請求的代碼,
router.post('/removepage', (req, res) => {
console.log("Hello", req.body);
client.connect(() => {
console.log('Connecting');
client.invoke("ZSD_CP_PRICE_DELETE",
{P_PLANT: req.body.P_PLANT,
P_MATERIAL: req.body.P_MATERIAL,
P_CUSTOMER: req.body.P_CUSTOMER
},
(err, result) => {
console.log('Invoking')
if (err) {
console.log(err)
return err;
}
console.log(result);
});
res.redirect('/');
});
});
這是用於發送 POST 請求的 javascript
fetch('/removepage', {
method: 'POST'
}, {
P_PLANT: value.P_PLANT,
P_MATERIAL: value.P_MATERIAL,
P_CUSTOMER: value.P_CUSTOMER
})
您需要將此附加到您的“確定”按鈕單擊
a.btn.btn-default onClick="handlerOK(value.PLANT, value.MATERIAL, value.CUSTOMER)") Delete
在外部文件“script.js”中定義 handlerOk 函數並像這樣添加對 jade 的引用:script(src="/script.js")
function handlerOK(PLANT, MATERIAL, CUSTOMER) {
const confirmed = confirm('are you sure you want to delete?');
if (!confirmed) return;
fetch('/removepage', {
method: 'POST'
}, {
P_PLANT: PLANT,
P_MATERIAL: MATERIAL,
P_CUSTOMER: CUSTOMER
})
}
你可以發送一個XMLHttpRequest :
var xhr = new XMLHttpRequest();
xhr.open("POST", '/removepage', true);
var body = ""; // Anything you want to send
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = () => {
if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
//treating the result here
}
}
xhr.send(body);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.