【问题标题】:Running ReactJS and PHP Together同时运行 ReactJS 和 PHP
【发布时间】:2021-07-28 23:34:11
【问题描述】:

我正在尝试在 React 中调用 fetch 来与我在 MAMP 上运行的 PHP 脚本对话。

由于某种原因,它给了我错误..我不确定从这里去哪里..

这是我在 React 中使用的代码:

getPHP = () => {
    var formData = new FormData();
    formData.append('content', 'test2');
    fetch(`http://localhost:8888/phpBackend/demo.php`, {
      method: 'POST',
      headers: {
      },
      body: formData,
    }).then(res => res.json())
    .then(response => {
      console.log('response:');
      console.log(response);
    });
  }
  onSubmit = (e) => {
    e.preventDefault();
    this.getPHP();
}

还有我的 PHP 脚本:

<?php
    $content = $_POST['content']
    $response = array("success" => true, "message" => $content);

    echo json_encode($response);
?>

我收到此错误:

FileUploader.js:20 POST http://localhost:8888/phpBackend/demo.php 500 (Internal Server Error)
UserForm._this.getPHP @ FileUploader.js:20
UserForm._this.onSubmit @ FileUploader.js:44
callCallback @ react-dom.development.js:100
invokeGuardedCallbackDev @ react-dom.development.js:138
invokeGuardedCallback @ react-dom.development.js:187
invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js:201
executeDispatch @ react-dom.development.js:461
executeDispatchesInOrder @ react-dom.development.js:483
executeDispatchesAndRelease @ react-dom.development.js:581
executeDispatchesAndReleaseTopLevel @ react-dom.development.js:592
forEachAccumulated @ react-dom.development.js:562
runEventsInBatch @ react-dom.development.js:723
runExtractedEventsInBatch @ react-dom.development.js:732
handleTopLevel @ react-dom.development.js:4476
batchedUpdates$1 @ react-dom.development.js:16659
batchedUpdates @ react-dom.development.js:2131
dispatchEvent @ react-dom.development.js:4555
interactiveUpdates$1 @ react-dom.development.js:16714
interactiveUpdates @ react-dom.development.js:2150
dispatchInteractiveEvent @ react-dom.development.js:4532
FileUploader.js:25 Uncaught (in promise) SyntaxError: Unexpected end of JSON input
    at FileUploader.js:25

最初存在跨域问题 (cors),但已通过我添加的 .htaccess 文件解决:

<IfModule mod_rewrite.c>
    Header add Access-Control-Allow-Origin: "*"
    Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
    Header add Access-Control-Allow-Headers: "Content-Type"

    RewriteEngine on
    RewriteBase /
</IfModule>

有人知道为什么会抛出错误吗?

【问题讨论】:

  • 如果你这样做,你是否仍然得到错误,例如array("success" =&gt; true, "message" =&gt; true); 作为测试?
  • @Tholle - 是的..仍然出现错误..
  • 在 Chrome 开发者工具(网络)中查看请求/响应。检查标头和有效负载。
  • 这对你们有什么意义吗?我对这些东西还是初学者水平.. 看起来 FormData 已收到? drive.google.com/file/d/1OZcBCEPKqxqT8okjQQMVfHX1P2JqisLH/…
  • 小问题,你可以通过邮递员或其他方式发布到网址吗?我的意思是这个网址http://localhost:8888/phpBackend/demo.php

标签: javascript php node.js reactjs http


【解决方案1】:

您在第 2 行的 php 脚本中有错字。您在行尾缺少分号。

<?php
$content = $_POST['content']; // there you missed the semicolon
$response = array("success" => true, "message" => $content);

echo json_encode($response);?>

【讨论】:

    猜你喜欢
    • 2018-01-22
    • 2018-01-04
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    相关资源
    最近更新 更多