如何使用动作在axios中发布反应es6中的数据

时间:2018-01-31 13:03:50

标签: javascript php reactjs post axios

我正在尝试使用axios发布数据。我可以得到api调用工作,但我遇到的问题是在服务器端处理数据。 php中的普通export const UPDATE_CONTENT = 'update_content'; export function updateContent(values) { console.log(values); let obj = {}; obj['params'] = values; console.log(obj); const request = axios.post(`/api/admin/rename/content/management/format/json`,JSON.stringify(values)); return { type: UPDATE_CONTENT, payload: request }; } 参数为空。

我有以下行动

values

{content : "<p>html text</p>",id:"21"} 是一个关键值对象

axios.post(

当我发布类似,values); url $_POST的使用时,请求参数显示为有效负载,服务器端的JSON.stringify为空。

当我使用$_POST时,Array ( [{"id":"21","content":"<p>html text</p>"} ) 不为空,但它不会作为请求上的正确键值对发送。我得到以下

$_POST = json_decode(file_get_contents('php://input'), true);

所以在服务器端我必须做$_POST = json_decode(file_get_contents('php://input'), true);

我该如何解决这个问题,所以我不必做<bindings> <basicHttpBinding > <binding name="defaultBasicHttpsBinding"> <security mode="Transport"> //or none <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security> </binding> </basicHttpBinding> </bindings>

1 个答案:

答案 0 :(得分:3)

默认情况下,axios将JavaScript对象序列化为JSON,因此只能使用"php://input"file_get_contents("php://input")读取。查看 documentation

如果你想避免它,你可以用application/x-www-form-urlencoded格式发送数据

您可以使用URLSearchParams之类的

来实现
var params = new URLSearchParams();
params.append('content', '<p>html text</p>');
params.append('id', '21');
axios.post(`/api/admin/rename/content/management/format/json`,params);

或者您可以使用querystring模块,如下所示:

var querystring = require('querystring');
axios.post('/api/admin/rename/content/management/format/json', querystring.stringify({"id":"21","content":"<p>html text</p>"}));

但是在修复此问题后,您需要在客户端的操作创建者中处理异步操作。请参阅Handling async request with React, Redux and Axios?以解决该问题