簡體   English   中英

在確認彈出窗口(節點、快遞、翡翠)中單擊確定時如何發出 POST 請求而不是 GET

[英]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('/');
  });
});

在同一個 js 文件中獲取和發布請求

這是用於發送 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM