我可以使用 JSON.parse() 在使用 PHP 全局变量(如 ($_GET, $_POST)

我想使用 PHP $_GET 方法直接获取 javascript 变量中的数据,然后将数据解析为 json 对象。


我可以使用 PHP 获取它,然后将其转换为字符串,但它没有为我提供类似 JSON 的结构。我得到的只是一个连续的字符串。


我已经在 PHP 中使用 json_decode 转换了数据并将其转换为单个字符串,然后将该字符串传递给 JS 变量。


<?php

$json = json_decode($_GET['data'], true );


$val = "";

foreach ($json as $key => $value) {

    echo $key . " : ";

    $arr = $value;

    foreach ($arr as $key => $v) {

        echo $v . " ";

        $val .= $v . " | ";

    }

    echo "<br>";

}

?>

<script type="text/javascript">

var l = "<?= $val ?>";

console.log(l); // This is a string

var json = "<?php echo $_GET['data'] ?>"; // Error Code

var jd = json.parse(json);

</script>

SyntaxError:意外令牌:标识符 // 我收到此错误


慕勒3428872
浏览 137回答 2
2回答

慕妹3242003

切勿将 PHP 与 JavaScript 混合使用。如前所述,您应该使用 Ajax 来执行此操作。然后,您可以根据需要将结果应用到 JavaScript 变量中。<script>var result = '';$.ajax({&nbsp; &nbsp; url: 'parse_url.php',&nbsp; &nbsp; type: "POST", //request type,&nbsp; &nbsp; dataType: 'json',&nbsp; &nbsp; data: {},&nbsp; &nbsp; success:function(json){&nbsp; &nbsp; &nbsp; &nbsp; result = json;&nbsp; &nbsp; },&nbsp; &nbsp; error: function(a) {&nbsp; &nbsp; &nbsp; &nbsp; console.log(a);&nbsp; &nbsp; }});console.log(result);</script>parse_url.phpdie(json_encode($_GET));

海绵宝宝撒

您应该将 JSON 放在单引号中,因为双引号用于 JSON 表示本身。var json = '<?php echo $_GET['data'] ?>';var jd = JSON.parse(json);但是真的没有必要使用JSON.parse. JSON 本身是 JavaScript 文字的正确格式,所以你可以这样写:var jd = <?php echo $_GET['data'] ?>;但是,将 URL 参数直接插入到 JavaScript 中是一个坏主意,因为它们可能会发送不只是 JSON 的内容。所以你应该使用json_encode()从 PHP 重新生成对象:var jd = <?php echo json_encode($json); ?>;
打开App,查看更多内容
随时随地看视频慕课网APP