Javascript将html粘贴到自身?

时间:2011-07-21 06:05:37

标签: javascript html

好的,这听起来很奇怪,但这就是我正在处理的问题。 在我的网站上,当我尝试加载它时,body标签中没有任何内容。当我查看chrome开发者控制台时,它在获取样式表后停止,但在我的ajax.js文件中是所有进入正文的html。 ajax.js文件的内容肯定不包含我的HTML主体,为什么它出现在那里? 以下是显示的内容: :(不能张贴图片 这是html:

<?php
    $_SESSION['frameStart'] = $_POST['frameStart'];
    $_SESSION['frameStop'] = $_POST['frameStop'];
    $_SESSION['format'] = $_POST['format'];
    $_SESSION['currFrame'] = $_POST['frameStart'] - 1;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>OpenRender - Free Online Rendering</title>
        <link rel="stylesheet" type="text/css" href="main.css" />
        <script type="text/javascript" src="ajaxz.js" />
        <?php flush(); ?>
    </head>
    <body>
        <div id="content" >
            <img src="images/logo.png" alt="OpenRender logo" id="logo" class="centerMargin" />
            <h1 id="topInfo">
                Site Version: 1.0<span id="space" />Backend:
                <?php
                    if (file_get_contents("/blend/online") == 0) {
                        echo '<span id="green">Online</span>
                        <img src="images/greenlight.png" alt="green light" id="light" />';
                    } else {
                        echo '<span id="red">Offline</span>
                        <img src="images/redlight.png" alt="red light" id="light" />';
                    }
                ?>
            </h1>
            <div id="innerBox">
                <h1 id="status">
                    Your JavaScript is turned off
                </h1>
                <div id="controlPanel">
                    <a href="">
                        <img src="images/play.png" alt="play" id="play" />
                    </a>
                    <a href="">
                        <img src="images/stop.png" alt="stop" id="stop" />
                    </a>
                    <a href="">
                        <img src="images/info.png" alt="info" id="info" />
                    </a>
                </div>
                <img src="images/scene.png" alt="Thumbnail of rendered picture" id="thumbnail" class="centerMargin" />
                <h2 id="frameNumber">
                    Frame: 0/0
                </h2>
                <img src="images/loading.gif" alt="loading" id="loading" class="centerMargin" />
                <a href="images/song.mp4" target="_blank">
                    <img src="images/song.png" alt="sound" id="sound" />
                </a>
            </div>
            <div id="bottomBar">
               <a href="http://www.facebook.com/pages/OpenRender/107428762671996" target="_blank">
                    <img src="images/facebook.png" alt="facebook" id="facebook" />
                </a>
                <a href="http://twitter.com/#!/openrender" target="_blank">
                <img src="images/twitter.png" alt="twitter" id="twitter" />
                </a>
                <p id="emailText">
                    Contact us at:<br />
                    openrender@gmail.com
                </p>
                <p id="creditText">
                    Created by: Braun and Marc<br />
                    Donations: Facetime Inc.
                </p>
           </div>
        </div>
    </body>
</html>

javascript文件:

window.onload = function(){init();}

function init() {
    var ajax = ajaxInit();
    ajax.onreadystatechange = update(ajax);
    ajaxContact(ajax);
    setInterval("ajaxContact('"+ajax+"')",1000);
}

function ajaxInit() {
    if (window.XMLHttpRequest) {
      ajax = new XMLHttpRequest();
    }
    if (window.ActiveXObject) {
          ajax = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (ajax) {
        document.getElementById("status").innerHTML = "AJAX initialized";
        return ajax;
    }
    else {
        docuement.getElementById("status").innerHTML = "Error: AJAX not available";
        return false;
    }

}

function ajaxContact(ajax) {
    try {
        ajax.open("GET","Ajax.php?" + "&ran=" + Math.random(),true);
        ajax.send();
    }
    catch (err) {
        document.getElementById("status").innerHTML = "Error contacting server";
        document.getElementById("loading").src = "images/redx.png";
    }
}

function update(ajax) {
      if (ajax.readyState==4 && ajax.status==200){
          var dataObj = jsonTranslate();
          document.getElementById("status").innerHTML = dataObj.status;
          document.getElementById("frame").innerHTML =
          "Frame:" + dataObj.firstFrame + "/" + dataObj.lastFrame;
          document.getElementById("thumbnail").src = dataObj.imgSrc;
      }
      if (ajax.status==404) {
          document.getElementById("status").innerHTML = "Ajax updater not found";
          document.getElementById("loading").src = "images/redx.png";
      }
}

function jsonTranslate() {
    return eval('(' + ajax.responseText + ')');
}

2 个答案:

答案 0 :(得分:3)

摆脱PHP的东西,只显示浏览器中出现的内容。如果浏览器中没有任何内容出现,可能是PHP问题,而不是javascript问题。

您应该使用HTML,而不是XHTML。

您可能不应该使用:

<script type="text/javascript" src="ajaxz.js" />

需要结束标记,浏览器可能不喜欢SHORTAG版本(您的服务器可能会将其更改为&lt; script ...&gt;&lt; / script&gt;,但我们不知道这一点。)

答案 1 :(得分:0)

不确定是否可以使用,但有些建议:

ajax.onreadystatechange = update(ajax);

这是第一个问题。如果你不能因为x的原因构造你的xmlhttprequest,那么ajax将是未定义的,你将得到一个错误。所以在绑定onreadystatechange之前,你应该检查是否(ajax)。 顺便说一句,使用上述语法,对函数更新进行调用(即使未触发readystatechange)。而且,绑定的结果不是函数,而是返回函数update:undefined。 您可以优先使用以下语法

ajax.onreadystatechange = update;
function update(){
    var ajax = arguments[0];
}

ajax.onreadystatechange = function(){return function(ajax){ update(ajax); }}();
function update(ajax){
    //like before
}

对于回调,您可以使用ajax.responseText检索服务器的答案;但那仍然不是json ......但是html ......