Javascript 为什么我们需要json或php';在JS中访问php数组的序列化方法,如果我们没有它们也能实现同样的效果?
通常我们使用json(因为它是比php序列化更好的选项)将php数组传输到JS以从那里访问它,或者我们可以使用cookie。 但是没有这些我们就不能做同样的事情吗?例如,让我们看一下第一个代码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
<!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控制台中没有错误。