React-Native提取不将主体内容发送到$ _POST

时间:2017-01-02 04:35:07

标签: javascript php react-native react-redux

我在使用React Native的fetch的POST请求时遇到问题。请求完全正常,但$ _POST变量并未出现在所有服务器端。我在帖子之前搜索了很多,但没有骰子。

有人能指出我正确的方向吗?获取请求的代码如下。

const dataString = `username=${email}&password=${password}`;

export default function ajaxPost(dataString, url, callback) {
    return fetch(url, {
        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(dataString)
    })
    .then((response) => response.json())
    .then((responseJson) => {
       callback(responseJson);
    })
    .catch((error) => {
        console.error(error);
    });
}

我如何在PHP上访问它:

$data = 'username=' . $_POST['username'] . '&password=' . $_POST['password'];
echo json_encode($data);

我也尝试过硬编码:

export default function ajaxPost(dataString, url, callback) {
    return fetch(url, {
        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            username: 'test',
            password: 'test123'
        })
    })
    .then((response) => response.json())
    .then((responseJson) => {
       callback(responseJson);
    })
    .catch((error) => {
        console.error(error);
    });
}

3 个答案:

答案 0 :(得分:1)

export default function ajaxPost(email,password, url, callback) {
    return fetch(url, {
        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
         user:{
           username: email,
           password: password,
         }
       })
    })
    .then((response) => response.json())
    .then((responseJson) => {
       callback(responseJson);
    })
    .catch((error) => {
        console.error(error);
    });
}

现在可以访问用户名和密码

$_POST['user']['username'], $_POST['user']['password']

答案 1 :(得分:1)

如果以发送方式发送,数据不会转到_POST数组。您可以使用

在PHP端获取它
json_decode(file_get_contents('php://input'), true)

或者使用FormData对象并删除js中的json头以传统地获取数据(通过_POST和_GET)。

答案 2 :(得分:0)

我使用相同的方法,它适用于我。你可以尝试两件事

  1. 从标头中删除接受密钥。我没有使用这个标题
  2. 我注意到你的数据对象叫做数据字符串,你有可能将数据字符串化两次吗?