混合php和javascript - 在什么条件下?

时间:2012-03-09 10:46:16

标签: php javascript

在什么条件下我可以将PHP放入Javascript代码中?总是好的吗?这只是一个坏主意吗?我很惊讶我还没有看到它。

例如,我遇到了这个......

$('#thumbnail').imgAreaSelect({aspectRatio: '<?php echo $thumb_height/$thumb_width;?>', onSelectChange:preview}); 

..在onpage脚本元素中。我不是那么有经验,但我很惊讶我之前从未见过混合js / php。但是你也可以把PHP放在.js文件中吗?如果我将文件扩展名设置为.php,那么文件是否会被解析?

4 个答案:

答案 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。