我一直在查看此SO Post以了解处理查询字符串。很高兴看到所有的回复。我想了解的是如何更进一步,其中提供的查询字符串实际上替换了 DOM 中的一个对象,例如特定的 DIV,并用另一个 DIV 替换它(可能隐藏在门外),或者只是替换 DIV 中的内容。
我在网络上查看了一些资源,但没有什么可以在 jsfiddle 中进行测试以正常工作。此处的另一篇文章对此有所回避。
目标
有一个简单的页面在正文中显示一个 DIV。加载页面时,会显示 DIV 和内容。使用 ?q=whatever 加载页面时,该 DIV 中的内容将替换为其他内容。
我的解决方案
为了有一个 DIV dissapea,这是第一个要解决的问题,基于通过的查询字符串,我在我的页面上实现了这个:
if (strrpos($_SERVER['REQUEST_URI'], '/landingpage/index.php?q=1') === strlen($_SERVER['REQUEST_URI']) - strlen('/landingpage/index.php?q=1')) {
$style = "display: none";
}
else {
$style = "display: inline";
}
然后我把它放在我的 DIV 中:
<div id="theForm" style="<?php echo $style; ?>">
//Form code here
</div>
如果查询字符串存在,这让我至少可以清除 DIV。
下一步,不是真正清除它,而是用一些内容替换它。
我将以下内容添加到我的原始 PHP 中:
$thankYou = "<h1>Thank You for signing up</h1>";
在第一个 if 下,并将 else 更改为 elseif 以捕获非查询字符串代码,未来可能还会出现更多情况。
所以最终的 PHP 代码如下所示:
if (strrpos($_SERVER['REQUEST_URI'], '/landingpage/index.php?q=1') === strlen($_SERVER['REQUEST_URI']) - strlen('/landingpage/index.php?q=1')) {
$style = "display: none";
$thankYou = "<h1>Thank You for signing up</h1>";
}
elseif (strrpos($_SERVER['REQUEST_URI'], '/landingpage/index.php') === strlen($_SERVER['REQUEST_URI']) - strlen('/landingpage/index.php')) {
$style = "display: inline";
$thankYou = "";
}
然后,只需在将显示或隐藏的 DIV 之前从 $thankYou 变量中添加 PHP 回显,这对我来说就是这样。