XAMPP/AJAX/PHP保存问题

XAMPP/AJAX/PHP保存问题,php,mysql,ajax,xampp,Php,Mysql,Ajax,Xampp,我对编程非常陌生,一直在尝试制作一个网站应用程序来学习一些web开发,使用Windows上的XAMPP作为本地web服务器。我已经到了尝试通过异步加载数据库中的一些信息来合并AJAX的地步。但是,每当我对下面myFunction()调用的PHP文件进行更改并保存它时,刷新页面时不会显示更新。我必须关闭并重新打开浏览器才能显示所做的更改。我能想到的唯一一件事是,当浏览器关闭时,会话会被破坏,但我不明白为什么在刷新页面时不会显示对PHP文件的更新。任何帮助都将不胜感激。以下是浏览器中显示的文件: &

我对编程非常陌生,一直在尝试制作一个网站应用程序来学习一些web开发,使用Windows上的XAMPP作为本地web服务器。我已经到了尝试通过异步加载数据库中的一些信息来合并AJAX的地步。但是,每当我对下面myFunction()调用的PHP文件进行更改并保存它时,刷新页面时不会显示更新。我必须关闭并重新打开浏览器才能显示所做的更改。我能想到的唯一一件事是,当浏览器关闭时,会话会被破坏,但我不明白为什么在刷新页面时不会显示对PHP文件的更新。任何帮助都将不胜感激。以下是浏览器中显示的文件:

<?php
    include 'core/init.php';
    include 'includes/overall/header.php';
    protect_page();
?>
<body>
    <div id="ticker">
    <?php
        include 'includes/teams.php';
    ?>
    </div>

    <div id="teaminfo"></div>

    <h2>Welcome to your homepage, <?php echo $user_data['first_name']; ?></h2>

    <a href="createleague.php">Create a League</a><br><br>

    <a href="logout.php">Logout</a><br><br>

    <script>
    function myFunction(team_id) 
    {
        if (window.XMLHttpRequest) 
        {
            xmlhttp = new XMLHttpRequest();
        }
        else
        {
            xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
        }

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

        xmlhttp.open('GET', 'teaminfo.php?x=' + team_id, true);
        xmlhttp.send();
    }
    </script>

</body>

</html>

欢迎访问您的主页,




功能myFunction(团队id) { if(window.XMLHttpRequest) { xmlhttp=新的XMLHttpRequest(); } 其他的 { xmlhttp=newActiveXObject('Microsoft.xmlhttp'); } xmlhttp.onreadystatechange=函数() { if(xmlhttp.readyState==4&&xmlhttp.status==200) { document.getElementById(“teaminfo”).innerHTML=xmlhttp.responseText; } } open('GET','teaminfo.php?x='+team_id,true); xmlhttp.send(); }
以及php页面:

<?php
include 'core/database/connect.php';
$team_id = $_GET['x'];

$sql = "SELECT name, wins, losses FROM hockey_team WHERE id = '$team_id'";

$result = mysql_query($sql);

while ($row = mysql_fetch_assoc($result))
{
    echo "<h1 id='team_name'>" . $row['name'] . "</h1>";
    echo "<p id='wins'>" . $row['wins'] . "</p>";
    echo "<p id='losses'>" . $row['losses'] . "</p>";
}
mysql_close();
?>

问题是,您需要以某种方式从脚本/html页面调用javascript函数“myFunction”,以使刷新正常工作。比如在页面的某个地方使用按钮

我没有看到任何对函数的调用。您必须理解,js“myFunction”并不是通过重新加载页面来调用的。它只是在那里定义的

ajax的同样目的是避免此页面重新加载例程。

将函数包装在其中 $(文档).ready(函数(){ myFunction(团队id){ ... } });


因为您的div是动态创建的,所以可能需要等待DOM完全加载。

在做了更多的研究之后,我相信我已经回答了自己的问题。我是新来的,所以我不确定我是否应该发布它,但我想它可能会在将来帮助别人。问题出在Internet Explorer上。它缓存AJAX请求,所以当我在服务器上更改了某些内容,然后再次运行请求时,它不会返回到服务器,而是获取上次发生的事情。我只是切换到使用Firefox进行开发,但如果这是一个实时网站,我必须确保IE不会缓存请求

对不起,我应该澄清一下。我在teams.php中动态创建div,单击div时调用myFunction()。所以当这些div被创建时,它们是一些东西。谢谢你的帮助。就像其他人在这里回应的那样,在加载所有页面或dom后声明函数是个好主意。问题是他们在上面提供的示例使用了JQuery库,而您在这里使用的是简单的原始ajax。所以我建议您使用类似window.onload=myFunction(){…};来声明你的函数。另外,另一个技巧是在xmlhttp.send内传递null(null);谢谢你的建议。我在储蓄方面仍然有问题。我可以加载页面,一切正常,然后进入PHP,在某处删除一个分号,保存页面(理论上现在应该返回一个错误),刷新页面,一切正常。我甚至可以通过注销、重新登录来终止会话,一切都会正常工作。但是如果我关闭浏览器,重新打开并登录,它将显示一个错误。我不知道这是缓存问题还是会话问题或是什么。有什么想法吗?再次感谢你的帮助。