[英]How to embed php script in javascript?
我想知道我是否可以在javascript
[1]中包含php
脚本,就像可以在html
[2]中一样
server.php:
<?php
echo 'hello World';
?>
client.js(或client.php(如果需要)):
function foo() {
var i = <?php include('server.php'); ?>
console.log( i );
}
如果可以做到,并且必须改为使用client.php
,那么我也非常感谢index.html/index.php
一个最小示例,因为我想看看现在我将如何包含client
了。 php
文件,而不是javascript
您可以使用输出缓冲来实现类似的功能,尽管不可能直接将PHP代码嵌入JS。
例:
server.php
<?php
echo 'hello World';
?>
client.php -(.php扩展名能够解析PHP标签,但实际上输出JS)
<?php
header("Content-type: application/x-javascript"); // Or 'text/javascript'
ob_start();
include( 'server.php');
$i = ob_get_contents();
ob_end_clean();
?>
function foo() {
var i = '<?= json_encode( $i); ?>';
console.log( i );
}
编辑:如果server.php文件仅返回一个简单的字符串,则可以修改client.php的代码。 请注意,我怎么说“返回”而不是输出-如果您的server.php输出任何内容,它将作为输出发送到浏览器(不是您想要的内容)。 另外,您可以在server.php中设置一个变量,该变量将在client.php中输出,或将代码封装在一个函数中:
server.php
<?php
function js_output()
{
return 'hello world';
}
?>
client.php
<?php
header("Content-type: application/x-javascript"); // Or 'text/javascript'
?>
function foo() {
var i = '<?php include( 'server.php'); echo addslashes( js_output()); ?>';
console.log( i );
}
注意:您可能还想添加对html_entities
或htmlspecialchars
的调用。
它必须是.php文件。 您需要将此设置为client.php的第一行:
header("Content-type: text/javascript");
然后,您可以像这样创建文件,然后将其包含在内,并将其用作常规javascript文件。 因此,使用<script>
标记,因为它现在被识别为JavaScript
最简单的方法是使用client.php而不是client.js,因为您的服务器将通过PHP解释器自动发送.php文件。 从技术上讲,您可以重新配置服务器以将其处理为.js文件,但我不建议这样做。
在将任何内容输出到用户之前,client.php文件应包括以下行:
header("Content-type: text/javascript");
至于基本的index.html / index.php示例:
<html>
<head>
<title>Example</title>
<script type="text/javascript" src="client.php"></script>
</head>
<body>
...
</body>
</html>
更新:示例client.php文件:
<?php
header("Content-type: text/javascript"); // This bit must come first!
?>
var i = "<?php echo $somevar; ?>" // This is JavaScript code with some PHP embedded.
为了将PHP嵌入文件中,服务器需要将其传递通过PHP解析器,并且它只会对被告知包含PHP标记的文件类型(即.php文件)进行处理。 您可能会告诉服务器也解析js文件,但是我不确定mime-type是否设置正确。 它还需要您更改服务器设置。 如果调用javascript文件.php,则mime-type肯定是错误的。 最兼容的方法是将javascript放在html文件(即您的.php文件)中。 如果您希望将.php文件中的javascript数量保持在最低水平,则只需将变量分配放在.php文件中,然后将其余部分保留在您的javascript文件中。
server.php:
<script language="javascript">
var some_var = "<?php echo $SOME_VAR ?>";
</script>
<script src="client.js" type="text/javascript">
client.js:
alert(some_var);
(全局)javascript变量some_var
将设置为PHP变量$SOME_VAR
设置的任何值。 设置字符串值时,请不要忘记引号。 另外,如果PHP代码包含错误,则可能会污染javascript代码,因此在执行此操作时必须格外小心。
我在PHP 5.5上测试了此解决方案。
1.创建一个名为myScript.php的文件。
// myScrpt.php内容:
<?php $fname = "Jason"; $lname = "Kent"; ?>
// test.php内容:
<!DOCTYPE html> <html> <head> <title>Include php Script</title> <script type="text/javascript"> <?php include 'myScript.php'; ?> </script> </head>
<h1>The result is:</h1> <?php echo "My full name is $fname $lname."; ?> </body> </html>
我的全名是Jason Kent。
您不能让客户端加载PHP。 您可以执行此操作的唯一方法是在server.php上
<html>
<head>
<script type="text/javascript">
function foo() {
var i = <?php echo 'hello World'; ?>
console.log( i );
}
</script>
</head>
<body>
</body>
</html>
基本上将javascript加载到页面的主体中。 或者。
<html>
<head>
<script type="text/javascript">
var i = <?php echo 'hello World'; ?>
</script>
<script type="text/javascript" src="client.js">
</head>
<body>
</body>
</html>
并在client.js中
function foo() {
console.log( i );
}
本质上来说,我可以在页面上将其作为全局变量加载
或如另一篇文章所建议,伪装成js的php文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.