2017-04-19 91 views
2

我只需要一種通過POST方法發送數據的方式,但響應是空的。爲什麼?如何通過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

使用print_r()而不是echo。的print_r(json_encode($ _ POST)) – Shaniawan

+0

@Shaniawan完成,則返回: 「迴應:你好世界 陣列 ( ) 1」 – xRobot

回答

3

在您的更迭小號處理程序,你必須編輯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 
+0

完成,它返回一個空字符串: 「迴應:」 – xRobot

+0

檢查編輯爲你的PHP文件 –

+0

完成後,它會返回以下內容:「SyntaxError:意外的令牌<位於位置0的JSON中」 – xRobot

0

可能導致空響應的常見錯誤是頭對象中缺少的'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); }); 

,讓我知道是否有幫助。