我在ReactJS中遇到了这样的错误:
VM345:1 Uncaught (in promise) SyntaxError: Unexpected end of JSON input
简短总结:我有php控制器与删除结束点-下面的一段代码.
php代码
header("Content-Type: application/json; charset=UTF-8");
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: *');
header("Access-Control-Allow-Headers: *");
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
error_log('green options');
return;
}
if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
http_response_code(204); //http code for DELETE
// http_response_code(404);
$jsonData = json_encode([
"message" => "Product not found"
]);
error_log($jsonData);
print $jsonData;
}
然后我通过下面的代码从reactJS调用这个端点,但是它在这个我无法理解的错误上失败了。任何其他端点(GET、POST)都按预期工作。也许它与OPTIONS方法有某种关系,因为它只在OPTIONS方法的情况下传递。
编辑:有没有办法从Chrome debug中检查它?当我只调试响应变量时,我不可能看到任何内容。谢谢
react代码
const requestOptions = {
method: 'DELETE',
mode: 'cors',
};
fetch(URL + id, requestOptions).then(response => {
return response.json(); //here it fails
}).then(data => {
console.log(data);
});
编辑:
编辑:
Chrome -网络-开发者工具
1条答案
按热度按时间oewdyzsn1#
我最终发现这个问题与返回的HTTP代码204有关。当我把它改为200时,它工作得很好。我不知道为什么它会引起这种问题,但事实就是这样。
有什么线索吗?
http代码200或204可以用于标识“资源被删除”。HTTP status code for update and delete?