2013-03-22 58 views
-1

我不确定我是否正确标记了我的标题,但我被告知下面的代码不起作用,因为浏览器窗口不会在提交更新内容的表单时重新加载(它位于shadowbox内)。如何更改以下PHP代码,以便它“轮询”该网站的更新变量

<?php 
    if(isset($_SESSION['contentupdated'])) { 
     unset($_SESSION['contentupdated']); 
     echo 'window.location.reload();'; 
    } 
?> 

我怎么会写PHP代码基于上面的代码是“民意调查”的网站,看看是否变量$_SESSION['contentupdated']设置?下面,我将粘贴我正在尝试使用的完整shadowbox代码。更新的代码将替换JavaScript代码中的PHP代码。这样关闭shadowbox后,网站将轮询该网站,看看是否有更新的代码(至少这是我的目标)。

有人告诉我必须轮询该网站以检查更新,但我搜索了Google,但无法找到解决方案,因为所有结果都显示为“如何创建网站轮询”。

<script> 
    Shadowbox.init({ 
     onOpen: onShOpen, 
     onClose: onShClose, 
    }); 

    function onShOpen() { 
     document.body.style.overflow = "hidden"; 
     return true; 
    } 

    function onShClose() { 
     document.body.style.overflow = "auto"; 
     <?php 
      if(isset($_SESSION['contentupdated'])) { 
       unset($_SESSION['contentupdated']); 
       echo 'window.location.reload();'; 
      } 
     ?> 
     return true; 
    } 
</script> 

有什么建议吗?

回答

-1

为什么使用JavaScript来重新加载页面。

<?php if(isset($_SESSION['contentupdated'])) { unset($_SESSION['contentupdated']); header('Location:yourpage.php');die(); } ?> 
+0

问题是,我被告知会话变量是在页面加载时设置的,所以当页面没有在更新时(shadowbox刚刚关闭)重新加载时,问题发生回到它后面的页面。所以我被告知我需要轮询站点以获取变量 – kdjernigan 2013-03-22 17:29:49

+0

的更新。是!在向浏览器写入内容之前(使用echo或启动html时),应该放置此代码。会话变量正在使用cookie - 所以它们可以在php页面的任何地方设置,只要你没有向浏览器输出任何内容(那么你将得到头已经发送 - 导致cookie在头中传输) – Adidi 2013-03-22 17:37:22

+0

页面已经加载,用户点击他们想要更新的部分,一个shadowbox打开editcontent.php页面,他们编辑内容,点击更新,然后关闭框。 shadowbox后面的页面不会重新加载。我需要在shadowbox后面的页面来验证是否设置了变量$ _SESSION ['contentupdated']。这就是为什么我上面的标准代码不起作用。我需要一个服务器友好的方式来检查这一点。 – kdjernigan 2013-03-22 17:41:11

-1

刚上市的事情浮现在脑海中,不是一个伟大的答案用PHP ...

长轮询:How do I implement basic "Long Polling"?

PHP和彗星,你可以使用头位置做在PHP: Using comet with PHP?

HTML5的Web套接字:使用其他技术,如

非PHP解决方案。

已更新:我加入的原因是OP似乎缺少一些有效搜索和回答他的问题的词汇。

+0

听起来更像是在阅读新评论时只需要触发Xhr请求... – ficuscr 2013-03-22 17:48:01

+0

你知道如何编码吗?我读了它;然而,无法弄清楚如何将其编码到我的脚本中,因为我看到的所有内容均基于div触发器 – kdjernigan 2013-03-22 18:35:16

+0

无论您在shadowbox上能够绑定什么......一个* close *事件?好吧,就像你有什么,但你的代码是没有意义的。您不能在回调中的客户端代码中激活该PHP代码。您需要将AJAX请求发送回服务器:http://api.jquery.com/jQuery.ajax/ – ficuscr 2013-03-22 18:39:18

相关问题