Javascript 客户端脚本中的服务器端变量

Javascript 客户端脚本中的服务器端变量,javascript,php,json,Javascript,Php,Json,我必须使用javascripts来绘制图表。但是图表的数据在服务器中。在谷歌搜索之后,我发现这可以通过使用服务器端脚本语言(如php)和客户端语言javascript或jquery来实现。 var php_data= $.parseJSON('<?php echo json_encode($chart_data); ?>'); var php_data=$.parseJSON(“”); 上面的代码运行良好,我可以将服务器中的数据传输到客户端 但我很好奇如何做到这一点,因为我们在

我必须使用javascripts来绘制图表。但是图表的数据在服务器中。在谷歌搜索之后,我发现这可以通过使用服务器端脚本语言(如php)和客户端语言javascript或jquery来实现。

var php_data= $.parseJSON('<?php echo json_encode($chart_data);  ?>');
var php_data=$.parseJSON(“”);
上面的代码运行良好,我可以将服务器中的数据传输到客户端

但我很好奇如何做到这一点,因为我们在客户端读取服务器端变量,而这里不使用AJAX。这确实令人困惑,因为php代码在服务器上运行,javascript在客户端运行。有人知道这背后的理论吗?javascript如何访问服务器

如果我们可以使用javascript访问php脚本中的任何变量,我们必须显式地采取一些措施来确认php脚本的安全性

是你想要的。提供的示例使用了,但是您可以使用并导出到JSON来解析JS

其中一个附带说明是,我建议您可以使用带有RESTFul API的客户端路由,使用更新的DOM呈现方法&XMLHttpRequests;下面是一些用于快速原型设计的优秀框架

好处是,客户端处理页面呈现,而服务器处理页面呈现,这会让服务器的内存消耗用于更重要的任务。

是您需要的。提供的示例使用了,但是您可以使用并导出到JSON来解析JS

其中一个附带说明是,我建议您可以使用带有RESTFul API的客户端路由,使用更新的DOM呈现方法&XMLHttpRequests;下面是一些用于快速原型设计的优秀框架


好处是客户端处理页面呈现,而服务器处理更重要的任务时会占用服务器的内存。

这是因为它的执行顺序。服务器端脚本首先执行(在服务器上),并生成发送到客户端的输出。因此,您可以使用服务器端代码在服务器上动态生成所有客户端脚本的一部分。这基本上就是你们在这里所做的

另一方面,将数据从slient端传递回服务器端需要AJAX或类似的技术,因为当客户端脚本运行时,服务器端脚本已经运行

就安全性而言,javascript中唯一可用的服务器端变量是那些显式呈现为javascript变量/对象的变量。(当然也可以是通过API/AJAX调用公开的)。在本例中,您通过如下方式在javascript中公开了
$chart\u data
变量:

var php_data= $.parseJSON('<?php echo json_encode($chart_data);  ?>');

您没有授予对PHP变量的访问权,只是将其内容作为javascript变量打印出来(此时-在此之后对PHP脚本中的
$chart\u data
所做的任何更改将不会反映在javascript版本中)。

这是因为它的执行顺序。服务器端脚本首先执行(在服务器上),并生成发送到客户端的输出。因此,您可以使用服务器端代码在服务器上动态生成所有客户端脚本的一部分。这基本上就是你们在这里所做的

另一方面,将数据从slient端传递回服务器端需要AJAX或类似的技术,因为当客户端脚本运行时,服务器端脚本已经运行

就安全性而言,javascript中唯一可用的服务器端变量是那些显式呈现为javascript变量/对象的变量。(当然也可以是通过API/AJAX调用公开的)。在本例中,您通过如下方式在javascript中公开了
$chart\u data
变量:

var php_data= $.parseJSON('<?php echo json_encode($chart_data);  ?>');

您尚未授予对PHP变量的访问权限,只是将其内容作为javascript变量打印出来(此时-在此之后对PHP脚本中的
$chart\u data
所做的任何更改都将不会反映在javascript版本中)。

感谢您的快速回答。我将仔细查看您提供的链接。这是一个有趣的方面,以前不知道。谢谢你的快速回答。我将仔细查看您提供的链接。这是一个有趣的方面,以前还不知道。是的,但我的观点是php脚本如何知道js需要这个变量?加载页面时js是否在请求它?不。作为程序员,您告诉它在输出中以js变量的形式写出该变量的内容-与作为页面一部分写出文本的方式完全相同。如果您说
-HTML没有请求
title
变量,那么您正在将其作为输出的一部分写入。这里完全一样。当客户端(浏览器)接收到页面时,js变量被定义为一个静态字符串,而不是对PHP变量的调用。是的,但我的观点是PHP脚本如何知道js需要该变量?加载页面时js是否在请求它?不。作为程序员,您告诉它在输出中以js变量的形式写出该变量的内容-与作为页面一部分写出文本的方式完全相同。如果您说
-HTML没有请求
title
变量,那么您正在将其作为输出的一部分写入。这里完全一样。当客户端(浏览器)接收到页面时,js变量被定义为静态字符串,而不是对PHP变量的调用。