我的页面中有以下代码:
<script type="text/javascript">
if (navigator.userAgent.indexOf('MSIE 8') != -1) {
<?php $ie8 = 1; ?>
alert(<?=$ie8?>);
}
</script>
现在,如果浏览器是IE8,这将正确地输出警报。一切都很好。
但是,如果我在运行之后测试$ie8
值,例如:
var_dump($ie8);
我总是以int(1)
的值结束浏览器是否为IE8。我在运行函数之前测试了该值,以确保它没有在其他地方设置,但我按预期得到了NULL
输出。
所以我的问题是,当它甚至不进入javascript语句时,如何设置为1
?
答案 0 :(得分:2)
您正在尝试将Javascript和PHP用作单一语言,当一个是服务器端而另一个是客户端时。
在PHP中,$ie8
始终为1
。你抛出什么样的HTML或Javascript并不重要,因为Javascript只是由客户端执行,当他们查看页面时,服务器在服务页面时呈现PHP。
如果要基于Javascript函数在PHP中设置值,则需要使用AJAX将客户端的请求发送回服务器,然后PHP可以与数据进行交互。查找有关客户端/服务器端语言和AJAX的更多信息,您可以开始使用。
答案 1 :(得分:1)
当该文件进入PHP时,它并不关心你的javascript逻辑。除非你的&#39; if&#39;是一个PHP而不是JS。
就像一名值班飞行员坐在飞机上作为乘客一样。他的逻辑会影响值班飞行员吗?不。当PHP正在运行时,那时JavaScript是免税的,对PHP Pilot来说无关紧要
答案 2 :(得分:1)
你的结果很明显。在PHP脚本中
<script type="text/javascript">
if (navigator.userAgent.indexOf('MSIE 8') != -1) {
<?php $ie8 = 1; ?>
alert(<?=$ie8?>);
}
</script>
当解释为服务器端时,这是浏览器接收的内容
<script type="text/javascript">
if (navigator.userAgent.indexOf('MSIE 8') != -1) {
alert(1);
}
</script>
您正在javascript块中设置PHP变量。 PHP首先被解释(在浏览器解释javascript之前)..