Php 将许多服务器端信息传递给JavaScript的最佳实践是什么?

Php 将许多服务器端信息传递给JavaScript的最佳实践是什么?,php,javascript,Php,Javascript,假设我在页面内部有很多Javascript。此时,通过简单地使用一些Print/Echo语句初始化JavaScript值来初始化变量是非常容易的 Example: var x = <?php echo('This is a value');?> 示例:变量x= 我首先认为我可以通过函数的参数传递所有变量的值,但这是不可能的,因为我们有很多值(我们有一个多语言网站,所有文本都来自服务器(BD)) 示例:initializeValues()//可以位于页面外部的JS方法 当我们想要

假设我在页面内部有很多Javascript。此时,通过简单地使用一些Print/Echo语句初始化JavaScript值来初始化变量是非常容易的

Example: var x = <?php echo('This is a value');?>
示例:变量x=
我首先认为我可以通过函数的参数传递所有变量的值,但这是不可能的,因为我们有很多值(我们有一个多语言网站,所有文本都来自服务器(BD))

示例:initializeValues()//可以位于页面外部的JS方法
当我们想要从页面中删除所有JavaScript以移动外部JavaScript文件上的所有内容时,会出现更多的问题。初始化所有这些变量的好方法是什么?如果使用OnLoad绑定JavaScript方法,我将无法使用Print/Echo方法填充所有值


有什么好的模式可以解决这个任务吗?

一个非常流行的模式是使用JSON格式。有库生成它,Javascript直接使用它。

一种非常流行的模式是使用JSON格式。有一些库可以生成它,Javascript直接使用它。

使用php,您可以创建一个关联数组,然后使用json\u encode,您可以序列化它,以便在页面上的一些脚本标记之间进行输出


关于这样做的一些示例,您可以看看

使用php,您可以创建一个关联数组,然后使用json_encode,您可以将其序列化,以便在一些脚本标记之间的页面上输出


有关这样做的一些示例,您可以查看最佳实践?从服务器向客户端js传递值对于单一的最佳实践来说太不稳定

假设你使用Smarty。那么,我的最佳实践是:

<script type="text/javascript">
var limit = Number("{$limit}");
var msg = "{$msg}";

{literal}
// code using the variables
{/literal}
</script>

其中,
$info['type']
数字
布尔值
、和
'
(空字符串)中的一种,适用于所有其他方面

最佳实践?从服务器向客户端js传递值对于单一的最佳实践来说太不稳定

var x = <?php echo('This is a value');?>
假设你使用Smarty。那么,我的最佳实践是:

<script type="text/javascript">
var limit = Number("{$limit}");
var msg = "{$msg}";

{literal}
// code using the variables
{/literal}
</script>
其中,
$info['type']
数字
布尔值
、和
'
(空字符串)中的一种,用于其他所有内容

var x = <?php echo('This is a value');?>
(语法错误。)您想要:

var x = <?php echo json_encode('This is a value', JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_QUOT);?>
最好将所有静态代码(包括绑定到事件侦听器的代码)放在外部JavaScript文件中。然而,每页数据应该仍然留在页面上,或者在文档本身的适当属性中(例如,用于不引人注目的脚本的类名),或者在一个简单的
var data=块,无其他代码

(语法错误。)您想要:

var x = <?php echo json_encode('This is a value', JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_QUOT);?>
最好将所有静态代码(包括绑定到事件侦听器的代码)放在外部JavaScript文件中。然而,每页数据应该仍然留在页面上,或者在文档本身的适当属性中(例如,用于不引人注目的脚本的类名),或者在一个简单的
var data=不带其他代码的块。

我是这样做的:


<?php

$foo = array('bar' => 'gork');

?>
<input id='foo' type='hidden' value='<?= json_encode($foo); ?>' />
我是这样做的:


<?php

$foo = array('bar' => 'gork');

?>
<input id='foo' type='hidden' value='<?= json_encode($foo); ?>' />

+1表示JSON。它简单、简洁、易读,几乎每种语言都有库。+1表示JSON。它简单、简洁、易读,几乎每种语言都有库。你能告诉我更多关于变量的内容吗?它们只是翻译标签吗?它们在不同的请求之间变化吗?或者它们大多是静态的?你能告诉我更多关于变量的内容吗?它们只是翻译标签吗?它们在不同的请求之间变化吗?或者它们大多是静态的?

var foo = $F('foo').jsonParse();
alert(foo.bar);