如何解决如何在没有外部API的情况下在React中发布表单数据
我正在与Amazon的Mechanical Turk合作,试图建立一个ExternalQuestion网站,该网站使用表单将数据回传到AMT,这是从其API要求的,从ExternalQuestion返回答案的典型方法。
非常特别的是,我试图在ReactJS中做到这一点,因为它简化了该项目的所有其他方面。
是否可以在不使用Flask / python之类的外部后端的情况下获取React到POST表单数据?
这是一个重要的要求,因为据我所知this information(以及我自己浪费的时间),使用Flask / python会使POST数据看起来像是来自服务器的,而不是来自服务器的数据。工作者的浏览器,将被拒绝。
但是,当我浏览React documentation on forms时,我什至没有看到关于GET和POST之类的表单方法的讨论。我知道React希望通过类似onClick()函数的方式来处理此问题,但是在React中,如果没有使数据看起来像是来自我的服务器而不是Worker的浏览器,我将看不到任何方法。>
解决方法
Form post只是XHR POST,带有form-data或x-www-form-urlencoded正文,并返回文本/ HTML。可以在带有Axios的React上完成。
此答案显示了使用Axios发送表单数据-> https://stackoverflow.com/a/47630754/3849555
,您最好的选择是通过FormData
界面使用内置的JavaScript Fetch API。
对于主体,您可以传递有效载荷,这些载荷可以通过FormData接口生成; MDN的文档:
FormData接口提供了一种方法,可以轻松地构造一组代表表单字段及其值的键/值对,然后可以使用XMLHttpRequest.send()方法轻松发送该键/值对。如果编码类型设置为“ multipart / form-data”,则使用与表单相同的格式。
不要使用XMLHttpRequest
,fetch是在此基础上更新的。
带有提取的通用示例如下所示:
const formData = new FormData();
formData.append('username','abc123');
formData.append('foo','bar);
fetch('https://example.com/foo/bar',{
method: 'POST',body: formData
})
.then(response => response.json())
.catch(error => console.error('Error:',error))
.then(response => console.log('Success:',JSON.stringify(response)))
然后可以根据诸如onClick
之类的用户操作来调用此提取调用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。