Javascript 基于设备宽度的PHP变量更改

Javascript 基于设备宽度的PHP变量更改,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我想做的是让我的网站获得访问者拥有的当前窗口宽度。然后我想有两个不同的选择。大概是这样的: <script> if (screen.width < 768) { <?php $a = 1; ?> } else { <?php $a = 2; ?> } </script> <?php $offset = 2; $showposts = 10; ?> <?php query_posts(array('of

我想做的是让我的网站获得访问者拥有的当前窗口宽度。然后我想有两个不同的选择。大概是这样的:

<script>
if (screen.width < 768) {
<?php $a = 1; ?>
} else {
<?php $a = 2; ?>
}
</script>
<?php 
$offset = 2;
$showposts = 10; 
?>
    
    <?php query_posts(array('offset' => $offset, 'showposts' => $showposts,'cat' => '8')); ?>

如果(屏幕宽度<768){
}否则{
}
我想做的是,我的php变量应该根据设备宽度进行更改

哪种方法最简单?我无法编写或理解一行AJAX,因此如果这是唯一的方法,我会非常满意一些指南,使之尽可能简单

使用CSS来实现这一点并不是正确的方法。所以,请不要告诉我一些与CSS有关的事情

编辑:

我不确定你们是否明白我真正想从这段代码中得到什么

所以我会写得更具体一些

我有一个网站,上面有一个显示2条最新新闻的图像滑块。就在这下面,我有一个设置为偏移量2的帖子查询,因为我不想查询滑块中的相同新闻

我的代码是这样的:

<script>
if (screen.width < 768) {
<?php $a = 1; ?>
} else {
<?php $a = 2; ?>
}
</script>
<?php 
$offset = 2;
$showposts = 10; 
?>
    
    <?php query_posts(array('offset' => $offset, 'showposts' => $showposts,'cat' => '8')); ?>

我不能进行两个不同的查询,因为我有不能加载超过1次的广告脚本,因为这样它们就根本不会显示。因此,所有这些都需要在一个查询中完成,这就是为什么它必须根据设备宽度进行更改

现在我忘了告诉大家,在宽度<768的版本中,我使滑块消失,因此我希望偏移量为0,而不是2


我希望这更有意义…

您可以使用cookies在JS和PHP之间进行通信

下面是设置或更新cookie的JS:

document.cookie = "someKey=someVal; path=/;";
然后可以使用
$\u COOKIE[“someKey”]
访问PHP中的数据


有一些PHP脚本试图从用户代理检测设备类型,这就是我在这个cookie不可用时使用的(第一页加载)。因此,我可以根据智能猜测在加载页面之前更改UI。

一种简单的方法是使用AJAX。然后,您将能够向服务器发出请求并执行某些脚本

$.post("http://yoursite.com/script.json",  { windowsWidth:  screen.width });

您可以接收变量的窗口宽度,然后在脚本中执行任何操作。

尝试以下操作:

var w = $(document).width(); // if you are using jquery
var v;
if (w < 768)
    v = <?php echo $var;?>;
else
    v = <?php echo $var2;?>;
var w=$(document).width();//如果您使用的是jquery
var v;
如果(w<768)
v=;
其他的
v=;

不能将javascript与PHP混合使用。您只能$\u GET或$\u POST返回脚本(或某种形式的AJAX)。在页面发送到客户端之前,您无法获取屏幕宽度。您可以将这两个值发送到客户端代码,并根据屏幕宽度仅使用一个值。但这取决于这些值的作用。也许这有助于您理解为什么,为什么不,以及如何从另一个pov实现这一点。请仔细检查您的代码。您确定您的代码不能以在客户端处理的方式进行转换吗?这个检查可以很容易地在客户端的CSS和JavaScript中完成。如果没有,您需要AJAX和PHP的组合。事实上,任何这样做的尝试总共需要两个请求。第一个用于呈现页面,第二个用于将宽度值发送回服务器。除非您想重新加载整个页面,否则您需要根据客户端代码中的宽度来操作UI。理想情况下,您可以呈现两种样式的页面,并在知道宽度后选择在客户端代码中显示哪种样式。这取决于用户是否启用了cookie。可以在浏览器中禁用它们,然后您将无法确定宽度。@schmidt382 True。您知道检测cookie是否被禁用的标准方法吗?最基本的方法是首先在javascript中验证它,尝试设置cookie并检查该变量是否设置了预期值。如果没有,则可能未启用Cookie。关于检查Cookie是否启用的方法,已经有一些问题:我没有否决它,但是。。。通过这种方式,您将一个PHP变量传递给一个JavaScript变量。您是对的。没有正确地理解主题发起者的问题,尽管这实际上可能解决了他的问题,因为没有人知道他想要我以前写的东西;我不知道怎么做,AJAX对我来说没有任何意义。你读过我编辑的关于这个问题的描述了吗?你想要的通常是使用CSS3查询或者jQuery和其他样式表来完成。没有人会做你想做的事,这毫无意义。。。考虑其他方法,忘记在PHP中使用窗口宽度的条件。