如何通过POST方法发送数据?

时间:2017-04-19 07:30:38

标签: react-native

我只需要一种通过POST方法发送数据的方法,但响应为空。为什么?

反应原生代码:

fetch('http://justanexample.altervista.org/saveinfo.php', {
  method: 'POST',
  headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },
  body: JSON.stringify({text: "blablabla", id_product: "12"})
}).then((response) => response.text())
.then((responseData) => { console.log("response: " + responseData); })
.catch((err) => { console.log(err); });

Saveinfo.php:

echo "Hello World\n";
echo json_encode($_POST);

响应:

response: Hello World
[]

2 个答案:

答案 0 :(得分:4)

在您的成功处理程序中,您必须编辑response.text(),因为您正在获取json响应

fetch('http://justanexample.altervista.org/saveinfo.php', {
  method: 'POST',
  headers: { 
           'Accept': 'application/json',
           'Content-Type': 'application/json' 
           },
  body: JSON.stringify({text: "blablabla", id_product: "12"})
})
.then((response) => JSON.stringify(response.json())) 
.then((responseData) => { console.log("response: " + responseData); })
.catch((err) => { console.log(err); });

在您的PHP代码中使用此代替现有代码

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

FormData例证:

var data = new FormData()
data.append({text: "blablabla", id_product: "12"});
body: data

答案 1 :(得分:0)

可能导致空响应的一个常见错误是header对象中缺少'Content-Length'属性。

尝试像这样添加:

let body = JSON.stringify({text: "blablabla", id_product: "12"})

fetch('http://justanexample.altervista.org/saveinfo.php', {
  method: 'POST',
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json',
     'Content-Length': data.length 
    },
    body: body
}).then((response) => response.text())
  .then((responseData) => { console.log("response: " + responseData); })
  .catch((err) => { console.log(err); });

如果有帮助,请告诉我。