我只需要一种通过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
[]
答案 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); });
如果有帮助,请告诉我。