我想知道我是否可以在php
[1]中添加javascript
个脚本,就像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
的最小示例,因为我希望看到我将如何包含{{1}现在它是client
文件,而不是php
答案 0 :(得分:4)
您可以使用输出缓冲来实现类似的功能,尽管不可能直接在JS中嵌入PHP代码。
示例:强>
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
的通话。
答案 1 :(得分:2)
它必须是.php文件。您需要将其设置为client.php中的第一行:
header("Content-type: text/javascript");
然后,您可以像这样创建文件,并将其包含在内,并将其用作常规javascript文件。所以使用<script>
标记,因为它现在被识别为JavaScript
答案 2 :(得分:2)
最简单的方法是使用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.
答案 3 :(得分:2)
要将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代码,因此在执行此操作时必须小心谨慎。
答案 4 :(得分:1)
我在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。
答案 5 :(得分:0)
您无法让客户端加载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 );
}
本质上是变量i可以作为页面上的全局变量加载
或者作为另一篇帖子建议,将php文件伪装为js。