【发布时间】:2021-10-12 20:25:48
【问题描述】:
我正在学习如何使用 React 向 API 发送 POST 请求。
我现在想要实现的是向 API 发送 POST 请求。
API 将插入类似这样的事件(这个方法叫什么?):
https://api.com/WebService.asmx/insertEvent?event_id=5&desc=<p>HelloWorld</p>&name=testing
我当前用作 POST 的方法显示在 POST 方法 中,它返回错误 unexpected token '<' in json at position 0 和我在 console.log(JSON.stringify(event)) 时得到的结果是这样的:
{"event_id":"5","desc":"<p>HelloWorld</p>","name":"testing"}```
POST 方法
const response = await fetch('https://api.com/WebService.asmx/insertEvent',
{
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(event)
})
编辑:我已通过对需要发送的 HTML 进行编码来修复上述错误。 这是我现在最新的 POST 方法,但由于某种原因,我仍然面临错误 500,即使当我从显示错误的 console.log 复制并粘贴 URL+参数时它仍然有效:
const addBulletin = async (event) => {
console.log(event, '--event')
const url = 'https://api.com/WebService.asmx/insertEvent';
axios.post(url, null, { params: {
title: event.title,
desc: event.desc,
image: event.image,
employee: event.employee,
entity: event.entity,
startDate: event.startDate,
endDate: event.endDate,
createdBy: event.createdBy
}})
.then(response => console.log(response.status))
.catch(err => console.warn(err));
};
编辑:我已经使用 .ajax 和 POST 在 vanilla JS 项目上测试了 API,它可以工作,所以我认为 API 应该不是问题。
var json = $('.insert-form').serialize();
$.ajax({
type: "POST",
url: "https://api.com/WebService.asmx/insertEvent",
data: json,
async: true,
success: function (response) {
alert("Event has been successfully created!");
},
error: function (response) {
console.log(response);
}
});
【问题讨论】:
-
你的后端框架是什么?
-
您是否应该像第一个示例一样在查询参数中发送数据?还是你应该发送一个 json 正文?
-
使用 query-string 包来解析和字符串化 URL 查询字符串
-
我的后端是 MySQL,我应该在查询参数中发送数据(现在我知道它叫什么了)。所以我一直在做错事,作为 json 正文发送。
标签: reactjs