php - Javascript document.write 覆盖 php 页面

标签 php javascript jquery html ajax

我有这个 Javascript 函数:

function capitalizeFL(string) { //takes a string, returns it with first letter capitalized
    return string.charAt(0).toUpperCase() + string.slice(1);
}

名为 statuswindow.php 的文件,其中包括以下内容:

<?php
    $raceV = "<script>document.write(capitalizeFL(\"".$player->race."\"));</script>";
    $clasV = "<script>document.write(capitalizeFL(\"".$player->clas."\"));</script>";
    echo "You have chosen a " . $raceV. " " .$clasV ."!";
?>

现在是主文件,在使用 $clas 将他们的第一个字母大写后,它使用 ajax 来更新和显示玩家的职业和种族( $racecapitalizeFL )。 :

主文件包括以下内容:

$("button").click(function() {
  $("#topMenu").load("statuswindow.php");
});

我希望发生的是 statuswindow.php 中的 html将正确显示在主窗口的#topMenu中分区。

我假设问题是由 document.write 引起的覆盖整个页面。问题是,如何在不使用 document.write 的情况下执行以下操作?

最佳答案

页面加载后无法使用 document.write。它的作用是打开一个新文档并用新内容替换其中的内容。

在此示例中,甚至不需要使用 document.write。只需使用脚本标签即可。 jQuery will handle the script tags for you .

您确实应该跳过使用 load 并使用 $.get 或 $.getJSON 并自己处理响应。

让服务器返回一个 JSON 对象。

{
  raceV : "foo",
  clasV : "bar",
  outStr : "You have chosen a {1} {2}!"
}

JavaScript 将是

$.getJSON("statuswindow.php", function(data) {
    var outString = data.outStr;
    outString = outString.replace("{1}",capitalizeFL(raceV));
    outString = outString.replace("{2}",capitalizeFL(clasV));
    $("#topMenu").html(outString );
})

但是真正的问题是:

为什么不在 PHP 中完成所有这些操作。 JavaScript 没有理由这样做。

无需 JavaScript!

<?php
    $raceV = ucfirst($player->race);
    $clasV = ucfirst($player->clas);
    echo "You have chosen a " . $raceV. " " .$clasV ."!";
?>

并且 jQuery 负载是相同的

 $("#topMenu").load("statuswindow.php");

关于php - Javascript document.write 覆盖 php 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16592506/

相关文章:

php 函数全局定义的变量不适用于 Yii

php - 需要PHP票务系统 源码

php - 在 Laravel 中应用 Bootstrap 后页面出现盒装外观

javascript - 当我将它传递给客户端时,JSON 对象架构看起来不同

javascript - 使用javascript在php代码中显示标签的值

javascript - 如何在 SAPUI5 中动态地将样式应用于标签元素

javascript - 防止用户输入最大值

jquery - 在 JMeter 测试期间有捕获 AJAX 流量的好方法吗?

javascript - addClass() 在 mouseenter() 中不起作用?

javascript - 除了浏览器本身之外,如何使用 JavaScript 或 Java 清除浏览器(IE、Firefox、Opera、Chrome)历史记录?