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

问题描述 投票:0回答:1

我正在尝试使用axios发布数据。我可以得到api调用工作,但我遇到的问题是在服务器端处理数据。 php中正常的$_POST参数是空的。

我有以下行动

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(url,values);这样的使用时,请求参数显示为有效负载,服务器端的$_POST为空。

当我使用JSON.stringify时,$_POST不是空的,但它不会在请求中作为正确的键值对发送。我得到以下

Array
(
    [{"id":"21","content":"<p>html text</p>"}
)

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

我怎么能解决这个问题,所以我不必做qazxsw poi

javascript php reactjs post axios
1个回答
3
投票

默认情况下,$_POST = json_decode(file_get_contents('php://input'), true);将JavaScript对象序列化为JSON,因此只能使用axios"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>"})); 以解决该问题

© www.soinside.com 2019 - 2024. All rights reserved.