Javascript 为什么我们需要json或php';在JS中访问php数组的序列化方法,如果我们没有它们也能实现同样的效果?

Javascript 为什么我们需要json或php';在JS中访问php数组的序列化方法,如果我们没有它们也能实现同样的效果?,javascript,php,arrays,json,Javascript,Php,Arrays,Json,通常我们使用json(因为它是比php序列化更好的选项)将php数组传输到JS以从那里访问它,或者我们可以使用cookie。 但是没有这些我们就不能做同样的事情吗?例如,让我们看一下第一个代码 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body

通常我们使用json(因为它是比php序列化更好的选项)将php数组传输到JS以从那里访问它,或者我们可以使用cookie。 但是没有这些我们就不能做同样的事情吗?例如,让我们看一下第一个代码

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <?php
     $elements = array('myname', 'myage');
    ?>

    <script type="text/javascript">

    var elements = <?php echo json_encode($elements) ; ?> ;

  //use the elements array afterwards

    </script>

</body>
</html>

文件
var元素=;
//之后使用元素数组
但是我们可以不使用json访问php数组,就像这样

   <script type="text/javascript">

    var elements = [];
      <?php foreach($elements as $element) : ?> 

      elements.push("<?php echo $element; ?>");

      <?php endforeach; ?>

 //use the elements array afterwards

    </script>

var元素=[];
元素。推送(“”);
//之后使用元素数组
那么除了安全原因之外,我们为什么需要json呢?

jsonencode()
将php数组转换为json格式的字符串。这是一个由服务器在本地处理的php调用

foreach替代方案混合了服务器和js执行,以获得类似的结果。对于服务器和javascript客户端来说,读取更复杂,执行时间更长

Javascript字符串可以用“或”分隔。如果它们用“and the string contains”分隔,则表示字符串结束,剩余部分或字符串将作为代码处理,从而导致解析错误。因此,“必须像这样转义\”
json_encode()
为您这样做,
echo
不会

所以请继续第一步。

jsonecode()
将php数组转换为json格式的字符串。这是一个由服务器在本地处理的php调用

foreach替代方案混合了服务器和js执行,以获得类似的结果。对于服务器和javascript客户端来说,读取更复杂,执行时间更长

Javascript字符串可以用“或”分隔。如果它们由“and the string contains”分隔,则表示字符串结束,剩余部分或字符串将作为代码处理,从而导致解析错误。因此,“必须像这样逃脱”
json_encode()
为您做到了这一点,
echo
没有


因此,请坚持第一点。

在javascript中嵌入php变量时,需要解决一些特殊情况(json_encode已经为您处理了)

对于字符串:

  • php字符串中的任何换行符都需要转义
  • 任何与周围引号类型相同的引号都需要转义
  • 字符串必须被引用
有关数字:

  • 不应引用该数字-否则,javascript端的数据类型将更改
对于阵列:

  • 每个元素可以是不同的类型,因此需要一个递归函数来正确处理编码。此外,PHP关联数组映射到json对象,而数字数组映射到json数组。这在您自己的代码中处理有点尴尬
**这不是一份详尽的清单,可能还有其他一些情况


编写自己的编码脚本时很容易出错,而且它的运行速度很可能比PHP json_encode函数慢。

在javascript中嵌入PHP变量时,您需要解决一些特殊情况(javascript已经为您处理了
json_encode

对于字符串:

  • php字符串中的任何换行符都需要转义
  • 任何与周围引号类型相同的引号都需要转义
  • 字符串必须被引用
有关数字:

  • 不应引用该数字-否则,javascript端的数据类型将更改
对于阵列:

  • 每个元素可以是不同的类型,因此需要一个递归函数来正确处理编码。此外,PHP关联数组映射到json对象,而数字数组映射到json数组。这在您自己的代码中处理有点尴尬
**这不是一份详尽的清单,可能还有其他一些情况


编写自己的编码脚本时很容易出错,而且很可能比PHP json_encode函数运行得慢。

请记住,实际上您正在打印大量javascript推送函数


我想JSON的真正优势在于使用AJAX调用时。PHP无法帮助您将信息直接解析到javascript脚本块中。

请记住,您实际上正在打印大量javascript推送函数


我想JSON的真正优势在于使用AJAX调用时。PHP不会帮助您将信息直接解析到javascript脚本块中。

$element
包含
?试试看,看看生成的javascript的源代码。javascript控制台中的错误……我会避免让php输出javascript,它不能以这种方式轻松缓存或缩小。@jeroen javascript控制台中没有错误。当
$element
包含
?试试看,看看生成的javascript的源代码。还有javascript控制台中的错误……我会避免php输出javascript,它不能以这种方式轻松缓存或缩小。@jeroen javascript控制台中没有错误。