ajax调用时没有消耗请求体
there is no request body consumed when it called by ajax
当我调用 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 也没有消耗任何数据。
请帮我修一下?
谢谢
您没有真正展示其余代码的样子。我正在为您的案例提供最小的工作示例。
// 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
.
上运行
如您所见,此请求需要 header Content-Type: application/x-www-form-urlencoded
,但是在您的 jQuery ajax 请求中它会自动添加。
当我调用 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 也没有消耗任何数据。 请帮我修一下? 谢谢
您没有真正展示其余代码的样子。我正在为您的案例提供最小的工作示例。
// 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
.
如您所见,此请求需要 header Content-Type: application/x-www-form-urlencoded
,但是在您的 jQuery ajax 请求中它会自动添加。