如何将 PHP 中的 JSON 响应传递给 Javascript
How to pass JSON response in PHP to Javascript
我在将 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 部分 ([1]: https://i.stack.imgur.com/Tujy3.png) 中使用 $urlContents 而不是 $travelArray,但我还没有弄清楚如何正确传递JSON 到正确的 JavaScript 格式。
此外,当我还没有通过表单发送请求时,我得到了
通知: Undefined variable: context in /var/www/html/greenTravelWizard.php online 83
警告: file_get_contents(192.168.2.201:5000/dataprovider): 失败打开流:HTTP 请求失败! HTTP/1.0 405 METHOD NOT ALLOWED in /var/www/html/greenTravelWizard.php 行 83
除非在回显之前对其进行编码,否则不应对其进行解码
你可能就可以做到
var response = <?php echo $file_get_contents("http://192.168.2.201:5000/dataprovider", false, $context); ?>;
如果你写了代理,那么你只需要做
<?php
header("content-type: application/json");
echo file_get_contents("http://192.168.2.201:5000/dataprovider", false, $context);
?>
然后使用fetch
从您的服务器获取它
我在将 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 部分 ([1]: https://i.stack.imgur.com/Tujy3.png) 中使用 $urlContents 而不是 $travelArray,但我还没有弄清楚如何正确传递JSON 到正确的 JavaScript 格式。
此外,当我还没有通过表单发送请求时,我得到了
通知: Undefined variable: context in /var/www/html/greenTravelWizard.php online 83
警告: file_get_contents(192.168.2.201:5000/dataprovider): 失败打开流:HTTP 请求失败! HTTP/1.0 405 METHOD NOT ALLOWED in /var/www/html/greenTravelWizard.php 行 83
除非在回显之前对其进行编码,否则不应对其进行解码
你可能就可以做到
var response = <?php echo $file_get_contents("http://192.168.2.201:5000/dataprovider", false, $context); ?>;
如果你写了代理,那么你只需要做
<?php
header("content-type: application/json");
echo file_get_contents("http://192.168.2.201:5000/dataprovider", false, $context);
?>
然后使用fetch
从您的服务器获取它