【问题标题】:XAMPP/AJAX/PHP Issue with savingXAMPP/AJAX/PHP 保存问题
【发布时间】:2015-02-27 04:33:50
【问题描述】:

我对编程非常陌生,并且一直在尝试制作一个网站应用程序来学习一些 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>

和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();
?>

【问题讨论】:

    标签: php mysql ajax xampp


    【解决方案1】:

    问题是您需要以某种方式从您的脚本/html 页面调用 javascript 函数“myFunction”以使刷新工作。就像在页面的某处使用按钮一样。

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

    ajax 的相同目的是避免这个页面重新加载例程。

    【讨论】:

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

    把你的函数包装在里面 $(文档).ready(函数() { 我的功能(team_id){ ... } });

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2016-12-13
        • 1970-01-01
        • 2014-04-24
        • 2014-04-10
        • 1970-01-01
        • 2016-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多