1

该方法适用于单个 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() 仅在页面加载时运行,但我不确定这一点。还是代码结构有问题?或者无论如何在不加载整个页面的情况下再次加载漂亮打印功能?

4

1 回答 1

0

更新 DOM 后,prettyPrint()再次调用,否则只插入了一些新的 HTML,但美化没有运行:

...
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
      document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
      prettyPrint();
      ^^^^^^^^^^^^^^
于 2012-11-02T01:04:44.867 回答