【发布时间】:2020-03-09 17:25:29
【问题描述】:
console.log("data ", data); // returns an object in JSON format {propertyName: propertyValue}
dataString = JSON.stringify(dataString); //correctly stringified json
let response = await fetch('updateRecevingEntry.php',
{
method:'POST',
headers: {'Content-Type':'application/json'},
body: dataString
}).then(response=>response.json());
但是我在 php 端返回了一个未定义的索引。
php 在哪里:
$matkey = $_POST['materialKey'];
返回
<b>Notice</b>: Undefined index: materialKey in <b>path/updateRecevingEntry.php</b> on line <b>3</b><br />
对于所有数据...没有一个被捕获。
那么为什么 _POST['propertyName'] 没有从正文中捕获 stringData?
我尝试了一些变体,例如发送数据而不是与标头混淆的字符串数据,但我似乎无法弄清楚如何发送有效负载以便 _POST['propertyName'] 捕获正文中的数据。
我之前使用的是 jquery 中的 $.ajax,它正在工作:但我正在重构它。
Fetch api 对我来说是新的。我哪里错了。我也不想在php端解析一个json对象。
在阅读了其中一个答案后,我得到了它在一种情况下的工作, 但是
let response = await fetch('updateRecevingEntry.php',
{
method:'POST',
headers: {'Content-Type':'application/json'},
body: sendData
}).then(response=>response.json());
和php
$postData = json_decode(file_get_contents("php://input"), true);
var_dump($postData);
只返回一个大的 NULL。
编辑二:结果它实际上只需要通过 JSON.stringify(sendData) 进行编码。自从。它按预期工作。
【问题讨论】:
-
var_dump($_POST);很可能是json_encoded,在这种情况下你需要先解码 -
复制,这就是我要避免的,无论如何要正确发送它,这样我就不会在 php 方面解析 json 对象?
-
JSON.stringify是您对其进行编码的位置。尝试在没有那个的情况下发送它。
标签: javascript php json post fetch