PHP& Ajax加载问题

时间:2012-01-16 20:24:30

标签: php ajax

我正在为一款名为“Eve Online”的游戏开发一个webtool。 这个游戏有一个游戏浏览器,完全支持所有HTML,CSS,PHP和Javascript语言,没有任何问题。

对于这个项目,我使用的是PHP和Ajax,因为我不想每次刷新页面。我想每隔5秒自动刷新一次。

所以做一个小测试我想显示服务器时间并每秒刷新一次。 这是我的代码:

<!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>
<link href="css/style.css" rel="stylesheet" type="text/css"/>
<title>Eve Online - Tactical Fleet Tool</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
    function loadXmlHttp(url, id) {
        var f = this;
        f.xmlHttp = null;

        if (window.XMLHttpRequest) // && !f.ie||/^http/.test(window.location.href)
            f.xmlHttp = new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari, others, IE 7+ when live - this is the standard method
        else if (/(object)|(function)/.test(typeof createRequest))
            f.xmlHttp = createRequest(); // ICEBrowser, perhaps others
        else {
            f.xmlHttp = null;
        }

        if(f.xmlHttp != null){
            f.el = document.getElementById(id);
            f.xmlHttp.open("POST",url,true);
            f.xmlHttp.onreadystatechange = function(){
                            f.stateChanged();
            };
            f.xmlHttp.send(null);
        }
    }


    loadXmlHttp.prototype.stateChanged=function () {
        if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href)))
            this.el.innerHTML = this.xmlHttp.responseText;
    }

    var requestTime = function(){
        new loadXmlHttp('member.php', 'timeDiv');
        setInterval(function(){
            new loadXmlHttp('member.php?t=' + new Date().getTime(), 'timeDiv');
        }, 1000);
    }

    if (window.addEventListener)
     window.addEventListener('load', requestTime, false);
    else if (window.attachEvent)
     window.attachEvent('onload', requestTime);

</script>
</head>
<body>
<div id="header">
    <div id="headercontainer">
        <a href="http://www.eveonline.com">
            <img style="border:0px;" alt="EVE Online" src="images/header.jpg"/>
        </a>
    </div>
</div>
<?php
    session_start();
    if($_SESSION['username'])
    {

        if($_SERVER['HTTP_EVE_TRUSTED'] == 'No')
            header('eve.trustMe:http://localhost/EveOnline_FleetManager/::Please trust me!');
        else
        {
            $charname =  $_SERVER['HTTP_EVE_CHARNAME'];
?>
<div id="menu">
    <ul>
        <li>You are currently logged in with: <?php echo $charname ?></li>
        <li>Add Character to account</li>
        <li>Make a fleet</li>
        <li>Edit Account Details</li>
        <li>Logout</li>
    </ul>
</div>

<div id='timeDiv'>
    <?php include "test.php"; ?>
</div>

<div id='overview'>
<h2 style="text-align:center;">Fleet Overview</h2>
<table id='fleet_table' border="1" align="center">
<tr id='fleet_table_header'>
    <th>Fleetname</th>
    <th>Started by Pilot</th>
    <th>Join</th>
</tr>
<tr id='fleet_table_data'>
    <td>iLLogicaL Pwn Fleet</td>
    <td>21:00 09/01/2012 by iLLogicaL</td>
    <td>Join</td>
</tr>
</table>
</div>
<?php 
        }
    }
    else
        die("You must be logged in!");
?>
</body>
</html>

在我的test.php页面中,我只有一个echo,它返回我的服务器时间。 这段代码给了我以下结果。

http://i42.photobucket.com/albums/e326/kartingfreak/20120116201252.jpg

所以服务器时间正在正确更新,但正如您所看到的那样,其他div也正在被刷新,并被放置在'timeDiv'内。

我做错了什么?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

您正在使用ajax响应替换timeDiv的内容。您只需要从ajax请求返回时间,而不是整页。

答案 1 :(得分:0)

正如我正在阅读它,看起来你正在从member.php加载member.php?

如果你创建了例如time.php,它只输出时间(没有别的),然后使用AJAX加载它,那有用吗?

编辑:看起来你已经有一个返回时间的文件(test.php) - 会在ajax调用工作中加载该文件吗?