我是一个PHP phr34k,在寻求一些知识时沉迷于JavaScript。如果要在他们的脚本中包含php代码,那么最好的方法是什么?我提供了一些示例代码作为我将如何在脚本中包含PHP的示例。
这是一种有效的方法吗?
的index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP with JavaScript?</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="test.js.php"></script>
</head>
<body>
</body>
</html>
test.js.php
<?php
$foo = 'bar';
?>
$(document).ready(function() {
var foo = '<?php echo $foo; ?>';
alert(foo);
});
再次感谢!
答案 0 :(得分:5)
还在test.js.php中设置内容类型标题
header('Content-Type: text/javascript');
您还可以定义内联foo
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP with JavaScript?</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
var foo = '<?php echo $foo;?>';
</script>
<script type="text/javascript" src="test.js"></script>
</head>
<body>
</body>
</html>
test.js
$(function(){
alert(foo);
});
答案 1 :(得分:2)
我见过人们使用PHP解释器组合多个JS源文件,然后再将它们提供给客户端。这样,JS开发人员可以从拥有多个文件进行更有组织的开发中受益,但避免向客户端发送多个JS文件(因此多个HTTP请求)。
然而,现在有几个只针对JavaScript的构建脚本。例如,Sprockets允许您自动构建JavaScript文件。在此之前,我认为最好先实践“编译”JavaScript依赖项。例如,我编写了一个简单的Python脚本,它将在JS源代码中查找@include注释,并按顺序包含需要的顺序。可能比浪费服务器时间更好,以换取轻微的开发便利。
编辑:请特别注意将可变数据正确地转储到JavaScript中。例如,如果$foo
是一个字符串,那么您需要确保它被双引号括起来。就像代码将要查找名为bar
的JavaScript变量一样。
答案 2 :(得分:0)
除非你有非常奇怪的情况,否则你所描述的内容实际上是不可能的。 PHP在服务器上进行评估,而Javascript被发送到用户代理并由其Javascript引擎执行(在客户端)。
我知道没有用户代理包含PHP引擎,因此无法在客户端执行PHP。此外,除非你使用一些令人发指的逃脱,否则在将Javascript发送到客户端之前,PHP将由服务器执行。
在后面给出的示例中,PHP在服务器上进行评估,并向客户端发送一个看起来像完全的Javascript文件:
$(document).ready(function() {
var foo = 'bar';
alert(foo);
});
因此Javascript中不包含PHP;相反,你是通过PHP动态生成(正常)Javascript。
如果后者是你的意图,那么是的 - 这很好。 PHP引擎对Javascript一无所知,只生成一些恰好对JS解析客户端具有特定含义的文本。因此,Javascript的存在不会改变PHP端的任何,并且由于它已被处理掉,PHP的(先前)存在不会改变Javascript上的任何侧。
(如果你想让你的Javascript在客户端上执行一些PHP,那从根本上说是不可能的。)