【发布时间】:2021-02-22 06:41:27
【问题描述】:
我在将 JSON 请求从 PHP 传递到 Javascript 时遇到问题。我正在向我的 Flask RESTful API 发送一个请求,并且我正在收到一个 JSON 响应(我相信)。 PHP:
$urlContents = file_get_contents("http://192.168.2.201:5000/dataprovider", false, $context);
$travelArray = json_decode($urlContents);
我的对象如下所示:
stdClass Object
(
[1] => stdClass Object
(
[var1] =>
[var2] =>
[var3] => 763
[var4] => 6:22:30
[var5] => München
[var6] => 58
[var7] => Bremen
[var8] => 239
)
[2] => stdClass Object
(
[var1] =>
[var2] =>
[var3] => 145
[var4] => 3:12:23
[var5] => München
[var6] => 583
[var7] => Bremen
[var8] => 9
)
)
JavaScript
<script type="text/javascript">
var response = JSON.parse('<?php echo $travelArray; ?>');
if (response != null) {
console.log(response);
} else {
console.log("test");
}
</script>
当我按 F12 并查看 sources 时,它会显示:
var response = JSON.parse('<br />
<b>Recoverable fatal error</b>: Object of class stdClass could not be converted to string in <b>/var/www/html/greenTravelWizard.php</b> on line <b>83</b><br />
我尝试了几种方法,例如在 JavaScript 部分使用 $urlContents 而不是 $travelArray([1]:https://i.stack.imgur.com/Tujy3.png),但我还没有弄清楚如何正确地将 JSON 传递为正确的 JavaScript 格式。
当我还没有通过表单发送请求时,我得到了
注意:未定义变量:/var/www/html/greenTravelWizard.php 中的上下文在 83
行
警告:file_get_contents(192.168.2.201:5000/dataprovider):打开流失败:HTTP 请求失败! HTTP/1.0 405 方法不允许在 /var/www/html/greenTravelWizard.php 行 83
【问题讨论】:
-
除了
decode这个bug,不推荐在javascript代码中生成PHP。更标准的工作流程是将您的 php 文件保存为data.php,然后使用fetch("data.php")在 javascript 中获取结果。 -
试试这个:var response = JSON.parse('');
-
如果你收到 JSON,并且想要传递给客户端 as JSON - 那你为什么要在服务器端 解码 JSON ?
标签: javascript php json stdclass