如何将变量和数据从PHP传递到JavaScript|三体教程
文章目录

如何将变量和数据从PHP传递到JavaScript?

将php的变量用到javascript中,应该是很多人都遇到过的。

但是在js中如何获取到php变量呢?

一般有三种方法,有的可能会开销大一点(但有这样做的理由),有些就简单。

1、使用AJAX从服务器获取所需的数据。

2、将数据回传到某个地方的页面,然后使用JavaScript从DOM获取信息。

3、将数据直接回传给JavaScript。

1.使用AJAX从服务器获取所需的数据

这种方法被认为是最好的,因为你的服务器端和客户端脚本是完全分离的。

优点

  • 更好地分离图层 - 如果明天停止使用PHP,并且希望移动到servlet,REST API或其他服务,则不必更改很多JavaScript代码。
  • 更可读 - JavaScript是JavaScript,PHP是PHP。如果不混合这两种语言,您将在两种语言中获得更多可读代码。
  • 允许异步数据传输 - 从PHP获取信息可能是时间/资源昂贵。有时你只是不想等待信息,加载页面,并随时获取信息。
  • 数据不能直接在标记中找到 - 这意味着您的标记保持清洁的任何额外的数据,只有JavaScript看到它。

缺点

  • 延迟 - AJAX创建一个HTTP请求,并且HTTP请求通过网络传输并具有网络延迟。
  • 状态 - 通过单独的HTTP请求获取的数据将不包含来自获取HTML文档的HTTP请求的任何信息。您可能需要此信息(例如,如果HTML文档是为了响应表单提交而生成的),如果您确实需要以某种方式进行传输。如果你已经排除了将数据嵌入到页面中(如果你使用这种技术,你将会得到这些数据),那么这就限制了你可能会受到竞争条件影响的cookies /会话。

2.将数据回传到某个地方的页面,并使用JavaScript从DOM获取信息

这种方法不如AJAX更好,但它仍然有其优点。PHP和JavaScript之间仍然相对独立,因为JavaScript中没有直接的PHP。

优点

  • 快速 DOM操作通常很快,您可以相对快速地存储和访问大量数据。

缺点

  • 潜在的非语义标记 - 通常情况下,你使用某种方式<input type=hidden>来存储信息,因为从中获取信息比较容易inputNode.value,但是这样做意味着在HTML中没有任何意义。HTML具有<meta>关于文档的数据元素,而HTML 5引入data-*了特定的数据属性,用于与可以与特定元素关联的JS读取。
  • Dirties the Source - PHP生成的数据直接输出到HTML源代码,这意味着你得到一个更大,更少的HTML源代码。
  • 更难得到结构化的数据 - 结构化的数据将必须是有效的HTML,否则你将不得不逃生并自己转换字符串。
  • 紧密地将PHP耦合到您的数据逻辑 - 因为在演示文稿中使用PHP,所以您不能将这两者完全分开。

3.将数据直接回传给JavaScript

这可能是最容易理解的,也是最可怕的使用。除非你知道你在做什么,否则不要这样做。

优点

  • 很容易实现 - 实现这一点并且理解起来很少。
  • 不脏源 - 变量直接输出到JavaScript,所以DOM不受影响。

缺点

  • 不安全 - PHP没有简单的JavaScript转义功能,而且它们不是微不足道的。特别是在使用用户输入时,您非常容易受到二级注入的影响。
  • 紧密地将PHP耦合到您的数据逻辑 - 因为在演示文稿中使用PHP,所以您不能将这两者完全分开。
  • 结构化的数据很难 - 你也许可以做JSON。但是XML和HTML需要特别的关注。

实例

<script>vardata=<?php echo json_encode("42",JSON_HEX_TAG);?>;//不要忘了额外的分号!</script>

这是最简单的方法。

以上就是如何将变量和数据从PHP传递到JavaScript的解决方法,希望对小伙伴有帮助。

本文网址:http://www.santii.com/article/181.html


数据更新时间:2018-05-21