在 PHP 'if' 中使用 javascript 更改页面标题
Change page title using javascript inside a PHP 'if'
情况如下:
我试图在单击菜单 link 时更改页面的标题和内容,而不重新加载整个文档。
到目前为止,更改内容就像一个魅力。但是我在更改标题时遇到了一些问题。
这是代码,所以当我解释它时我可以理解它:
if (isset($_GET['rq'])) {
$rq = $_GET['rq'];
foreach($lesMenus as $menuName=>$menuContent){
foreach($menuContent as $name=>$link){
$linkW = substr($link, 0, strpos($link, '.'));
if($linkW == $rq){
$newTitle = $name;
break;
}
}
}
if (isset($newTitle)){
$title = $newTitle;
echo("<script type=\"text/javascript\">
document.title =".$newTitle.";
</script>");
}
$mainContent='You have asked for :'.$rq;
echo $mainContent;
}
else{
include('INC/layout.html.inc.php');
}
发生的事情是:单击 menu-link 时,将调用一个函数,并在一些工作后执行此操作:xmlhttp.open("GET", "index.php?rq=" + rq , true);
这里的内容基本上是 index.php
页面的基础。
双重 foreach
循环浏览 $lesMenus
数组以找到 rq
的对应项。
现在的问题是if (isset($newTitle))
里面的脚本没有播放。其他一切都可以(我试过 echo $newTitle;
并且它做到了,页面内容根据要求更改,但脚本不播放。即使是该脚本中的简单 Hello world 也不会发生。
我在 Whosebug 和网络上搜索了一种在 PHP 中玩 javaScript 的方法,这似乎对其他人有用,但在我的情况下却行不通。
有什么指点吗? :)
感谢阅读我,
Chris(IT 学生)
您可以在 PHP 中进行条件检查,并将标题存储在 $newTitle
中,并可能创建另一个布尔值 $needToChangeTitle
。
而不是使用 PHP 来回显脚本标签。只需将脚本标记放入 HTML 并进行另一次条件检查。
var needToChangeTitle = "<?php echo $needToChangeTitle ?>";
var newTitle = "<?php echo $newTitle ?>";
if (needToChangeTitle === "true") {
document.title = newTitle;
}
有不同的方法来更改页面标题。
只需将数据传递给 javacsript 变量即可更改它,如下所示:
<script>
var jTitle=<?= $phpContainnewTitle; ?>
</script>
然后将其更改为 javascript:
document.title = jTitle;
但是 它会导致 SEO 排名降低。标题是SEO中的重要标签。
注意这个。
简单地将脚本添加到 DOM 不会导致它执行。所以你需要以某种方式调用它,也许通过将它包装在一个函数中并按名称调用它。
但是,如果您打算这样做,您也可以只回显 newTitle 并在执行 http 请求后更新它:
JS:
<!-- Assuming you have something like this -->
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
var responseText = xhttp.responseText;
document.title = responseText;
}
};
xhttp.open("GET", "index.php?rq=" + rq , true);
xhttp.send();
</script>
PHP:
if (isset($newTitle)){
echo($newTitle);
}
情况如下: 我试图在单击菜单 link 时更改页面的标题和内容,而不重新加载整个文档。 到目前为止,更改内容就像一个魅力。但是我在更改标题时遇到了一些问题。
这是代码,所以当我解释它时我可以理解它:
if (isset($_GET['rq'])) {
$rq = $_GET['rq'];
foreach($lesMenus as $menuName=>$menuContent){
foreach($menuContent as $name=>$link){
$linkW = substr($link, 0, strpos($link, '.'));
if($linkW == $rq){
$newTitle = $name;
break;
}
}
}
if (isset($newTitle)){
$title = $newTitle;
echo("<script type=\"text/javascript\">
document.title =".$newTitle.";
</script>");
}
$mainContent='You have asked for :'.$rq;
echo $mainContent;
}
else{
include('INC/layout.html.inc.php');
}
发生的事情是:单击 menu-link 时,将调用一个函数,并在一些工作后执行此操作:xmlhttp.open("GET", "index.php?rq=" + rq , true);
这里的内容基本上是 index.php
页面的基础。
双重 foreach
循环浏览 $lesMenus
数组以找到 rq
的对应项。
现在的问题是if (isset($newTitle))
里面的脚本没有播放。其他一切都可以(我试过 echo $newTitle;
并且它做到了,页面内容根据要求更改,但脚本不播放。即使是该脚本中的简单 Hello world 也不会发生。
我在 Whosebug 和网络上搜索了一种在 PHP 中玩 javaScript 的方法,这似乎对其他人有用,但在我的情况下却行不通。
有什么指点吗? :)
感谢阅读我,
Chris(IT 学生)
您可以在 PHP 中进行条件检查,并将标题存储在 $newTitle
中,并可能创建另一个布尔值 $needToChangeTitle
。
而不是使用 PHP 来回显脚本标签。只需将脚本标记放入 HTML 并进行另一次条件检查。
var needToChangeTitle = "<?php echo $needToChangeTitle ?>";
var newTitle = "<?php echo $newTitle ?>";
if (needToChangeTitle === "true") {
document.title = newTitle;
}
有不同的方法来更改页面标题。 只需将数据传递给 javacsript 变量即可更改它,如下所示:
<script>
var jTitle=<?= $phpContainnewTitle; ?>
</script>
然后将其更改为 javascript:
document.title = jTitle;
但是 它会导致 SEO 排名降低。标题是SEO中的重要标签。 注意这个。
简单地将脚本添加到 DOM 不会导致它执行。所以你需要以某种方式调用它,也许通过将它包装在一个函数中并按名称调用它。
但是,如果您打算这样做,您也可以只回显 newTitle 并在执行 http 请求后更新它:
JS:
<!-- Assuming you have something like this -->
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
var responseText = xhttp.responseText;
document.title = responseText;
}
};
xhttp.open("GET", "index.php?rq=" + rq , true);
xhttp.send();
</script>
PHP:
if (isset($newTitle)){
echo($newTitle);
}