dolphin 发表于 2014-2-13 16:53:12

将屏幕分辨率传给PHP,转换后为0


                $row = '<script type="text/javascript">document.write(window.screen.width)</script>';
                echo $row . "<br />";
                echo intval($row);


第一个输出的是 1440   第二个输出的是 0.为什么?

Hex 发表于 2014-2-13 19:59:05

这个竟然能输出1440?
你是怎么做到的 js 和 PHP 混合的。。。。。。

dolphin836 发表于 2014-2-13 22:20:09

Hex 发表于 2014-2-13 19:59 static/image/common/back.gif
这个竟然能输出1440?
你是怎么做到的 js 和 PHP 混合的。。。。。。

这么写我也觉得很奇怪

不过测试的结果的确是这样的

输出1440是没有问题的

但是转成int后就变成0了

不知道为什么

其实我的目的是想在服务器端得到客户端屏幕的宽度

@Hex 大神有什么建议么?

dolphin836 发表于 2014-2-13 23:06:21

我自己想到一个是用cookie。在客户端用javascript设置一个cookie,在服务器端用php读取。

Hex 发表于 2014-2-14 12:25:46

dolphin836 发表于 2014-2-13 22:20 static/image/common/back.gif
这么写我也觉得很奇怪

不过测试的结果的确是这样的


哈哈,我知道为什么可以显示数字了。

原因就是:这个数字是由浏览器显示的,而不是由 PHP 输出的,PHP 只输出了 <script>...</script>这部分代码,然后浏览器就运行了这个代码,然后你就能看到数字了。

这也就解释了为什么 intval($row); 的结果是 0 了,因为实际上 $row 是一个字符串,也就是 <script>...</script> 所以转换成数字就是0。

你如果想让 PHP 接收到 JS 的数据,必须想办法把 JS 数据发送给 PHP,比如用 AJAX。

PHP 与 JS 不能混合使用。

dolphin 发表于 2014-2-14 12:27:09

使用cookie的方式有一个问题

就是第一次打开网站的时候无法得到cookie值

Hex 发表于 2014-2-14 14:15:22

dolphin 发表于 2014-2-14 12:27 static/image/common/back.gif
使用cookie的方式有一个问题

就是第一次打开网站的时候无法得到cookie值

你说的没错。

所以你这个需求可能就有问题,屏幕分辨率的信息本身就不应该让 PHP 来处理,这应该是在浏览器端处理的事情。

dolphin 发表于 2014-2-18 10:14:17

Hex 发表于 2014-2-14 14:15 static/image/common/back.gif
你说的没错。

所以你这个需求可能就有问题,屏幕分辨率的信息本身就不应该让 PHP 来处理,这应该是在浏 ...

是的。是因为在自己对javascript不够熟悉,就想用PHP来处理。看了下别人的瀑布流原理,服务器端应该只负责提供数据,显示在前台通过javascript来控制才是对的。谢谢Hex大神。

Hex 发表于 2014-2-18 10:32:51

dolphin 发表于 2014-2-18 10:14 static/image/common/back.gif
是的。是因为在自己对javascript不够熟悉,就想用PHP来处理。看了下别人的瀑布流原理,服务器端应该只负 ...

哈哈,原来是做瀑布流~高端~~
页: [1]
查看完整版本: 将屏幕分辨率传给PHP,转换后为0