使用json字符串发送数据。
async function sender() {
const url = "file.php";
try {
const response = await fetch(url, {
method: 'POST',
//body: ('param=' + JSON.stringify(object)),
body: JSON.stringify(object), // {"name":"John","surname":"Smith"}
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});
const json = await response.text();
console.log(json);
} catch (error) {
console.error('Ошибка:', error);
}
}
var_dump($_POST)输出
array(1) {
["{"name":"John","surname":"Smith"}"]=>
string(0) ""
}
如何输出单独的键和单独的值?
继续经营它们。
像这样尝试:
echo $_POST; // Array
echo $_POST[0]; // пусто
echo $_POST[name]; // пусто
echo $_POST->name; // пусто
echo json_decode($_POST); // json_decode() expects parameter 1 to be string, array given
echo json_encode($_POST); // Array{"{\"name\":\"John\",\"surname\":\"Smith\"}":""}
ps 带参数发送前,一切正常
body: ('param=' + JSON.stringify(object)) // param={"name":"John","surname":"Smith"}
并像这样输出
$param = json_decode($_REQUEST["param"]);
echo $param->name; // John
您不是在一个值中发送 JSON,而是在一个键中,所以您的 $_POST 似乎什么都不包含。但实际上那里的键名为'{"name":"John","surname":"Smith"}',这不应该是。可能是因为内容类型是application/x-www-form-urlencoded,虽然body是一个简单的字符串,也就是没有字段名,因为它是一个表单。
以下是发送 fetch 数据的示例:
也就是说,如果您使用 application/x-www-form-urlencoded 类型发送,那么您首先需要创建此表单,而不仅仅是发送它。