使用html中的表单提交按钮加载php文件

使用html中的表单提交按钮加载php文件,php,html,Php,Html,以下代码是HTML和php代码。如果按下提交按钮,我希望执行practice.php文件(maketest.txt文件)。但是如果我按下按钮,php不会生成文件。有人知道这件事吗 <HTML> <HEAD> </HEAD> <BODY onLoad="tid=setInterval('refresh()',1000);"> <div id="outputDiv"></div>

以下代码是HTML和php代码。如果按下提交按钮,我希望执行practice.php文件(maketest.txt文件)。但是如果我按下按钮,php不会生成文件。有人知道这件事吗

<HTML>
    <HEAD>
    </HEAD>
    <BODY onLoad="tid=setInterval('refresh()',1000);">
        <div id="outputDiv"></div>
        <form method=post action="practice.php">
            <script language="JavaScript">
            function refresh()
            {           
                var HTML = "";
                HTML += "<input type=submit value=makefile>";
                document.getElementById("outputDiv").innerHTML = HTML;
            }
            </script>
        </form>
    </BODY>
</HTML> 


<html>
    <head><meta http-equiv="Content-Type" content="text/html" charset="utf-8">
    </head>

    <body>
                <?
                    $fp = fopen("test.txt", "w") or die("cannot open file");
                    $data = "!!!!!!!!!!!!!!!!!!!";
                    fwrite($fp, $data);
                    fclose($fp);
                    echo "!!!!!!!!!!!!!!!";
                ?>
    </body>
</html>

函数刷新()
{           
var HTML=“”;
HTML+=“”;
document.getElementById(“outputDiv”).innerHTML=HTML;
}
使用“a”标志,如果文件不在那里,它将自动创建

$fp = fopen("test.txt", "a")
使用JQuery,它会很简单

<input type="submit" value="Load file" id="button"/>
<script>
//If document is ready.
$(document).ready(function(){

  //If button is clicked.
  $("#button").click(function(){

   //Load a file in "outputdiv" div.
   $("#outputDiv").load("test.txt");

   //Assuming you are trying to refresh div after 1000 ms sec, Therefor:
   setInterval(function(){

    $("#outputDiv").load("test.txt");

     },1000);
   });
  });
</script>

//如果文件准备好了。
$(文档).ready(函数(){
//如果按钮被点击。
$(“#按钮”)。单击(函数(){
//在“outputdiv”div中加载文件。
$(“#outputDiv”).load(“test.txt”);
//假设您试图在1000毫秒后刷新div,因此:
setInterval(函数(){
$(“#outputDiv”).load(“test.txt”);
},1000);
});
});

必须将提交按钮放在表单元素内。脚本将提交按钮放在表单元素外部的
元素中。按“提交”时,浏览器不知道要提交哪个表单

例如,这将更好地工作:

<HTML>
    <HEAD>
    </HEAD>
    <BODY onLoad="tid=setInterval('refresh()',1000);">
        <form method=post action="practice.php" id="form">
            <script language="JavaScript">
            function refresh()
            {           
                var HTML = "";
                HTML += "<input type=submit value=makefile>";
                document.getElementById("form").innerHTML += HTML;
            }
            </script>
        </form>
    </BODY>
</HTML>

函数刷新()
{           
var HTML=“”;
HTML+=“”;
document.getElementById(“表单”).innerHTML+=HTML;
}

请不要介意,但为什么在他使用JavaScript时将其放在表单元素中?@Waleed他使用JavaScript插入提交按钮,而不是提交表单。要提交,用户需要按下不在任何表单元素中的按钮。谢谢@snipes83。但是,如果我按下按钮,不是生成文件而是显示下载窗口。所以,若我下载文件并打开它,它就是我的php源代码。我认为它不是执行源代码。你知道吗?@Jimmy这可能是因为你在不支持PHP的服务器上运行网页。您需要将html和PHP文件上载到启用PHP的web服务器。或者让PHP在您自己的机器上运行。@snipes83如果他在不支持PHP的服务器上运行文件,它只会在web浏览器窗口中显示所有PHP代码,而不是显示下载。您知道函数
setInterval()
用于每隔一段时间重复进行函数调用。在您的情况下,这意味着提交按钮将永远每秒重新创建一次。使用
setTimeout()
进行一次延迟函数调用。“a”标志并不意味着将自动创建文件。这意味着数据将追加到文件末尾,而不是覆盖旧数据。如果文件不存在,“w”标志也将尝试创建该文件。是否确定?阅读以下内容:“w”标志将文件指针放在文件的开头,并将文件截断为零长度,因此将在结尾添加“a”。这正是我在前面的评论中所说的。分别使用“a”和“w”标志将导致调用尝试创建以前不存在的文件。不同之处在于,“a”将导致任何后续写入都将附加到末尾,而不是覆盖以前的数据。追加数据是不相关的,因为OP从未声明他希望这样做;有一个fwrite函数,他正在尝试编写文件。