获取 JSON React to PHP [重复]

Posted

技术标签:

【中文标题】获取 JSON React to PHP [重复]【英文标题】:Fetch JSON React to PHP [duplicate] 【发布时间】:2021-07-08 05:39:14 【问题描述】:

我在 React 中创建了一个按钮,允许我使用 Fetch 将数据存储在 JSON 中,并将其发送到本地 php 服务器。

我收到来自我的 PHP 文件的调用,但我无法获取数据。

这是反应:

const handleSubmit = (e) => 
    e.preventDefault();
    const requestOptions = 
      method: 'POST',
      mode: 'no-cors',
      headers:  'Content-Type': 'application/json' ,
      body: JSON.stringify( title: 'React POST Request Example' )
  ;
  fetch('http://localhost:8000/index.php', requestOptions)
        .then(response => response.json())
        .then(data => this.setState( postId: data.id ));

; 

这里的 PHP(我只尝试打印值)变量总是空的

header('Access-Control-Allow-Origin: *');


if ($_SERVER["REQUEST_METHOD"] == "POST") 
error_log(print_r($_REQUEST, true));
error_log(print_r($_SERVER, true));
error_log(print_r($_POST['title'], true));

$var = $POST['title'];
error_log(print_r($var, true));
return;




if ($_REQUEST) 
error_log(print_r("omg", true));
return;



if (isset($_POST)) 
    echo print_r($_POST,true);
    return 0;

我在发送数据时 React 中也出现以下错误。

Uncaught (in promise) SyntaxError: Unexpected end of input 在:54:23

【问题讨论】:

【参考方案1】:

因为您没有按照response.json() 的预期返回任何 JSON。

您可以使用file_get_contents('php://input') 获取您的传入数据。

// prepare data to return
$dataToReturn = [];

// populate the data as you need
$dataToReturn = json_decode(file_get_contents('php://input'));

// Output the JSON string with appropriate header
header('Content-Type: application/json');
echo json_encode($dataToReturn);
exit(0);

【讨论】:

您好,谢谢您的回答,我还是遇到了同样的问题。 $DataToReturn 仍然为空 PHP 的输出(在您的网络控制台中)是什么? 我复制您的代码示例并添加“error_log(print_r($dataToReturn, true));”要获取数据,它会返回一个空数组 你检查file_get_contents('php://input')数据了吗?您将拥有 JSON 编码的数据。 完美!有用!非常感谢

以上是关于获取 JSON React to PHP [重复]的主要内容,如果未能解决你的问题,请参考以下文章

REACT 中的 fetch() 失败,没有 statusText 也没有 json 正文。如何获取有关错误的额外信息?

如何在 React 中正确地 fetch() JSON

如何使用 php 在 WordPress 插件中回显 json 数据 [重复]

jQuery:从json响应中获取订单ID [重复]

如何使用 PHP 查询获取结果之间的日期 [重复]

从 php url 获取数据以在 react native 中保存到本地 sqlite