当我在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;
答案 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);
});