【发布时间】:2012-07-11 00:00:28
【问题描述】:
我一直在查看SO Post 以了解处理查询字符串。很高兴看到所有的回复。我想了解的是如何更进一步,其中提供的查询字符串实际上替换了 DOM 中的一个对象,例如特定的 DIV,并用另一个 DIV 替换它(可能隐藏在门外),或者只是替换 DIV 中的内容。
我在网上查看了一些资源,但没有任何资源可以在 jsfiddle 中进行测试以使其正常工作。 Another post here sort of eludes to this.
目标
让一个简单的页面在正文中显示一个 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 回显,这对我来说就是这样。
【问题讨论】:
-
在编程中,将任务拆分为小的子任务并分别解决是个好主意。因此,将这个问题拆分为更小的问题并提出一个特定问题,这样它就不会看起来像“我有任务 - 为我做”
-
@zerkms 我觉得这真的是一个单一的问题,即如何根据查询字符串替换内容,但如果您觉得这更像是一项任务,请原谅我,那不是我的意图。
-
@JamesPoulson 我认为innerHTML 可能是一种添加一些数据作为替换手段的方法。那里的最后一个答案可能会有所启发。
标签: php javascript query-string