将本机POST数据反应到API无法正常工作

时间:2019-02-14 11:21:11

标签: javascript php reactjs react-native

当我在React Native中使用FormData将数据发布到php API时,得到Notice: Undefined index响应。但是当我在php文件中对参数进行硬编码时,我就能得到结果。

我已经尝试使用React文档中的JSON.stringify。我遇到同样的问题。 在服务器端,我尝试了建议file_get_contents('php://input'),它只返回null。

  var data = new FormData();
  data.append({
    latitude: '55555',
    longitude: '9999',
  });

fetch('http://localhost/someapi', {
    method:'POST',
    headers:{
        'Accept':'application/json',
        'Content-Type': 'multipart/form-data',
        'Content-length': data.length
    },
    body: data
    })
    .then((response)=>response.text())
    .then((response)=>{
        console.log('  Show response');
        console.log(response);
    })
    .catch((err)=>{
        console.warn(err);
    });

我正在使用response.text(),所以我可以显示错误。否则response.json()给我Unexpected token <,因为它返回html

这是我的PHP服务器代码

 $lat =  $_POST['latitude'];
 $lng =  $_POST['longitude'];
 echo json_encode($lat);

我也尝试过

 $json = file_get_contents('php://input');
 $obj = json_decode($json, TRUE);
 echo $obj;

2 个答案:

答案 0 :(得分:1)

您正在传递'multipart/form-data'标头,因此必须将formdata传递给正文,而不是JSON.stringify

 var formData = new FormData();
 formData.append('latitude', 55555);
 formData.append('longitude', 9999);

fetch('http://localhost/someapi', {
    method:'POST',
    headers:{
        'Accept':'application/json',
        'Content-Type': 'multipart/form-data'
    },
    body: formData
    })
    .then((response)=>{
        console.log('Response ==>',response);
    })
    .catch((err)=>{
        console.warn(err);
    });

答案 1 :(得分:0)

只需在您的Fetch API中省略标头对象,即可正常工作


 headers:{
        'Accept':'application/json',
        'Content-Type': 'multipart/form-data'
    }

解决方案应该是这样


fetch('http://localhost/someapi', {
    method:'POST',
    body: data
    })
    .then((response)=>response.text())
    .then((response)=>{
        console.log('  Show response');
        console.log(response);
    })
    .catch((err)=>{
        console.warn(err);
    });