當我呼叫rest API post方法時,我遇到了ajax問題,我使用nodeJS構建API端腳本看起來像
const route = express.Router();
route.post('/tambahproduk',async(req,res)=>{
console.log("API 3");
try {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-
With, Content-Type, Accept");
let response = await ProdukController.tambahproduk(req,res)
return res.send(response)
} catch (error) {
console.log(error,`eror`);
return res.send(response("500",error))
}
})
從下面的路由呼叫的函式
async function tambahproduk(req,res){
const {
param1,param2
} = req.body;
let obj = {}
console.log(req.body,param1);
try {
const request = await DB.CONDB.promise();
let insert = `insert query`
console.log(insert);
// let data = await request.query(insert)
if(data){
obj = respone("200",`Success)
}else{
obj = respone("500",`Failed)
}
return obj
}catch(err){
console.log(err);
obj = respone("500",err)
return obj
}
}
所以我嘗試在客戶端用ajax呼叫它
$.ajax({
type:'POST',
url:`${uri}/blabla/blablabla`,
data:{
param1: "asd",
param2: "123"
},
success: function(data){
console.log(data);
}
})
}
enter code here
但是回應提交的 param1 是未定義的,即使我嘗試記錄 req.body 也沒有消耗資料。請幫我解決它?謝謝
uj5u.com熱心網友回復:
您并沒有真正展示其余代碼的外觀。我正在為您的案例提供最小的作業示例。
// Server
const express = require('express');
const app = express();
app.use(express.urlencoded({ extended: false }));
// If you want to get payload as a JSON object instead of FormData
// uncomment the line below
// app.use(express.json());
app.post('/products', function(req, res) {
// Get request body parameters
const {param1, param2} = req.body;
res.json({
param1,
param2
});
});
// Client
$.ajax({
type:'POST',
url:`/products`,
data:{
param1: "123",
param2: "123"
},
success: function(data){
console.log(data);
}
})
運行后得到回應
{param1: '123', param2: '123'}
這是一個curl命令。
curl \
-X POST \
-d "param1=123¶m2=123" \
-H "Content-Type: application/x-www-form-urlencoded" \
http://127.0.0.1:3000/products
假設應用程式在http://127.0.0.1:3000.
正如您注意到的,此請求需要標頭Content-Type: application/x-www-form-urlencoded,但是在您的 jQuery ajax req 中它會自動添加。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/438457.html
上一篇:從快取中獲取訊息
