该方法可以在单个php文件中正常工作:

因此,在我的html页面中,我尝试使用js并调用php文件,并通过Google Prettify突出显示内容

<!DOCTYPE html>
<html lang="en">
<head>
<link href="googleprettify/prettify.css" type="text/css" rel="stylesheet" />

<script src="googleprettify/prettify.js" type="text/javascript"></script>
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;


    }
  }
xmlhttp.open("GET","callback_json.php",true);
xmlhttp.send();

}
</script>
   </head>

  <body onload="prettyPrint()" >

  <button onclick="loadXMLDoc();">Get Data</button>
<div id="...">
<pre class='prettyprint;'>
    function foo()
    {
        if (counter == 10)
            return;
        // it works!
    }</pre>
</div>



<div id="myDiv">
need to be replaced
</div>
 </body>

</html>


第一段代码工作正常,但是当我调用php文件时

<?php
  $ch = curl_init();
  $url='someurl';
  $timeout = 5;
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  $data = curl_exec($ch);
  curl_close($ch);

  echo '<pre class="prettyprint;"> ';
  echo $data;
  echo "</pre>";?>


并且返回的代码无法突出显示。我怀疑body onload =“ prettyPrint()”是否存在问题,因为prettyprint()仅在页面加载时运行,但我对此不确定。还是代码结构有问题?还是仍然有需要再次加载prettyprint函数而不加载整个页面?

最佳答案

更新DOM后,再次调用prettyPrint(),否则您只插入了一些
新的HTML,但是整理未运行:

...
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
      document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
      prettyPrint();
      ^^^^^^^^^^^^^^

10-06 08:07