如何将 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.php83

除非在回显之前对其进行编码,否则不应对其进行解码

你可能就可以做到

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 从您的服务器获取它