我试图使用来自NodeJS的axios发送一个POST请求,但是请求的主体/数据没有发送。
我在后端使用axios和NodeJS,这是我的NodeJS脚本,它发送请求:
const axios = require("axios").default;
axios.post("my url goes here/email.php", {
emailto: "receiver email",
toname: "name",
emailfrom: "sender email",
fromname: "name",
subject: "subject",
messagebody: "hello world"
});当接收服务器试图读取请求中的数据(例如声明$subject = $_POSTsubject;在PHP中)时,请求的参数是null -因此$_POST[subject]返回null。
但是,当我使用jQuery (前端)而不是axios发送相同的请求时,它工作得很好,因为接收服务器现在可以读取POST请求的数据(因此$_POST[subject]这次返回"subject"):
$.ajax("https://my url goes here/email.php", {
method: "POST",
cache: false,
data: {
emailto: "receiver's email",
toname: "name",
emailfrom: "sender email",
fromname: "name",
subject: "subject",
messagebody: "hello world"
}
})当我在PHP $_POST[subject]上运行第二个片段时,返回"subject",但当我在NodeJS中运行第一个代码段时,$_POST[subject]返回null。为什么axios不发送我的请求体?
发布于 2022-08-29 08:35:54
看看axios文档
默认情况下,axios将JavaScript对象序列化为JSON
所以您是服务器的POSTing JSON。
PHP在填充$_POST时不支持JSON。
您需要发布它支持的格式,例如URL编码的表单数据或多部分表单数据。
(您的jQuery示例使用URL编码的表单数据)。
要以应用程序/x-www表单-urlencoded格式发送数据,您可以使用URLSearchParams API (它在绝大多数浏览器中都支持)和节点(从2018年发布的v10开始)。 const params =新URLSearchParams({ foo:'bar‘});params.append('extraparam','value');axios.post('/foo',params);
发布于 2022-08-28 20:12:09
向请求中添加一个内容主体(如{ headers: {'Content-Type': 'application/json'} ),但是我会编辑这个和
const axios = require("axios");
var data = JSON.stringify({
emailto: "receiver email",
toname: "name",
emailfrom: "sender email",
fromname: "name",
subject: "subject",
messagebody: "hello world"
});
var config = {
method: 'post',
url: 'https://alpha-howl.com/database/email.php',
headers: {
'Content-Type': 'application/json'
},
data : data
};
try {
await axios(config)
} catch (ex) {
throw ex
} 主要是为了确保您正在解析axios返回的承诺,以确保请求甚至成功。
https://stackoverflow.com/questions/73520743
复制相似问题