在PHP中使用javascript更改页面标题';if';


Change page title using javascript inside a PHP 'if'

情况如下:我试图在不重新加载整个文档的情况下,在单击菜单链接时更改页面的标题和内容。到目前为止,改变内容就像一种魅力。但我对更改标题有一些问题。

这是代码,所以我解释它时可以理解:

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');
}

发生的情况是:当点击菜单链接时,会调用一个函数,经过一些工作后:xmlhttp.open("GET", "index.php?rq=" + rq , true);

这里基本上是index.php页面的基础。

foreach循环为rq的对应数组省略了$lesMenus数组。

现在的问题是if (isset($newTitle))中的脚本无法播放。其他一切都可以(我尝试过echo $newTitle;,它确实做到了,页面的内容会根据要求而改变,但脚本不会播放。即使是脚本中的简单Hello世界也不会发生。

我在stackOverflow和web上搜索了一种在PHP中播放javaScript的方法,这似乎对其他人有效,但在我的情况下却不行。

有指针吗?:)

感谢阅读我的文章,

Chris(IT学生)

简单地将脚本添加到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);
}

有不同的方法来更改页面标题。您可以通过将数据传递到javacscript变量来更改它,如下所示:

<script>
var jTitle=<?= $phpContainnewTitle; ?>
</script>

然后用javascript将其更改为如下:

  document.title = jTitle;

这会降低SEO排名。标题是SEO中的重要标签。请注意这一点。

您可以在PHP中进行条件检查,并将标题存储在$newTitle中,还可以创建另一个布尔$needToChangeTitle

而不是使用PHP来回显脚本标记。只需将脚本标记作为HTML放入,然后进行另一个条件检查。

var needToChangeTitle = "<?php echo $needToChangeTitle ?>";
var newTitle = "<?php echo $newTitle ?>";
if (needToChangeTitle === "true") {
  document.title = newTitle;
}