Php 写入文本文件不会';除非我刷新,否则我不会更新

Php 写入文本文件不会';除非我刷新,否则我不会更新,php,html,mysql,Php,Html,Mysql,我试图允许用户下载带有坐标信息的xml文件。我使用以下方法创建下载按钮: <a download href='XML_Data.xml'><input type='button' value='XML Data' onclick='loadXML()'></a> 下面是我的loadXML()函数: function loadXML() { <?php //clear the file file_put_con

我试图允许用户下载带有坐标信息的xml文件。我使用以下方法创建下载按钮:

<a download href='XML_Data.xml'><input type='button' value='XML Data' onclick='loadXML()'></a>

下面是我的loadXML()函数:

function loadXML()
{
    <?php
        //clear the file
        file_put_contents("XML_Data.xml", "");

        $handle = fopen("XML_Data.xml", "w+");
        fwrite($handle, "<ANNOTATIONS>\r\n");

        //markers
        $sql = "SELECT coords, color, annot_type FROM cbmarker.annot_test WHERE
        project_id='$pid' 
        AND userid=" . $_SESSION['Id'] .
        " AND image=\"" . $pic .
        "\" AND annot_type='marker'
        ORDER BY id ASC";
        $result = mysql_query($sql);

        while($row = mysql_fetch_array($result, MYSQL_ASSOC))
        {           
            $markerX = $row['coords'];
            $row = mysql_fetch_array($result, MYSQL_ASSOC);
            $markerY = $row['coords'];

            fwrite($handle, "  <annotation annot_type='marker' color='" . $row['color'] . "' X='" . $markerX . "' Y='" . $markerY . "' />\r\n");
        } 

        fwrite($handle, "</ANNOTATIONS>\r\n");
        fclose($handle);
    ?>
函数loadXML()
{
发生的情况如下:

  • 您请求显示JavaScript代码的页面
  • 由于该页面的某些部分包含PHP代码,因此该PHP代码在服务器上运行,并将呈现的HTML(包括JavaScript)返回到浏览器
  • 呈现的HTML随后在浏览器中呈现。作为页面一部分下载的JavaScript不会更改,因为PHP代码不会在浏览器中重新执行。执行该代码只是为了呈现浏览器中现在的HTML+JavaScript
  • 刷新页面时,web浏览器会再次查询服务器,并通过在服务器上再次运行PHP生成新的JavaScript

  • 如果希望页面在不完全刷新的情况下自动显示新项目,可以使用计时器定期向服务器返回Ajax查询,以查找数据更新。

    停止使用不推荐的MySQL扩展。从迁移到MySQLi或PDO开始。您对PHP的工作原理有一个基本的误解。它在s上运行当你请求页面时,你不能将PHP代码放入Javascript函数中。你需要使用AJAX来实现这一点。