在什么条件下我可以将PHP放入Javascript代码中?总是好的吗?这只是一个坏主意吗?我很惊讶我还没有看到它。
例如,我遇到了这个......
$('#thumbnail').imgAreaSelect({aspectRatio: '<?php echo $thumb_height/$thumb_width;?>', onSelectChange:preview});
..在onpage脚本元素中。我不是那么有经验,但我很惊讶我之前从未见过混合js / php。但是你也可以把PHP放在.js文件中吗?如果我将文件扩展名设置为.php,那么文件是否会被解析?
答案 0 :(得分:5)
您可以将PHP代码放入*.js
文件中,但您需要告诉Web服务器还要在*.js
文件上执行PHP解释器。这样的事情应该在你的httpd.conf
<IfModule php5_module>
AddType application/x-httpd-php .php .php5 .js
...
</IfModule>
更好的解决方案是将*.js
个文件重命名为*.js.php
或*.php
。浏览器不介意,PHP解释器也将在那些上执行。
答案 1 :(得分:0)
由于调试困难和/或代码可读性差(如将PHP与HTML混合),通常可以避免将JS与PHP混合。但是,这是可能的。但更安全的方法可能是将PHP值传递给函数,或者将PHP值设置为全局JS变量,然后使用它。也许是这样的:
//JS code
var value = <?php echo ($thumb_height/$thumb_width);?>
....
$('#thumbnail').imgAreaSelect({aspectRatio: value, onSelectChange:preview});
这样,阅读起来会容易得多。祝你有美好的一天。
答案 2 :(得分:0)
我可以在什么条件下将PHP放入Javascript代码?
无条件。这将是不可能的,也是无用的
你可以只将相反的JS代码放入PHP中。
换句话说,你可以使PHP输出 text ,它可以是有效的HTML,JS,XML等等。
一旦发送到浏览器,此文本将被相应地解释,但其中没有PHP痕迹。
只要PHP仅代表显示逻辑,它总是可以的。
因此,只有将PHP放在.js文件中才会将其放入PHP文件中。
答案 3 :(得分:0)
您提供的代码是在Web服务器返回的网页中动态生成javascript的一种非常合理的方式。
因此,例如,如果$ thumb_height为100且$ thumb_width为10,则Web服务器将返回包含以下javascript的网页:
$('#thumbnail')。imgAreaSelect({aspectRatio:'10',onSelectChange:preview});
如果在另一次调用该页面时,$ thumb_height为24且$ thumb_width为6,则服务器返回的网页将为:
$('#thumbnail')。imgAreaSelect({aspectRatio:'4',onSelectChange:preview});
您可以使用php动态生成网页的任何部分,包括html和javascript。