iTu*_*rki 13 html php forms post
我正在尝试在用户输入文本并按下提交按钮后在同一页面中执行PHP功能.
我想到的第一个是使用表格.当用户提交表单时,PHP函数将在同一页面中执行.用户不会被定向到其他页面.处理将完成并显示在同一页面中(无需重新加载)
这是我达到的目的:
在test.php文件中:
<form action="test.php" method="post">
<input type="text" name="user" placeholder="enter a text" />
<input type="submit" value="submit" onclick="test()" />
</form>
Run Code Online (Sandbox Code Playgroud)
PHP代码[ test()function ] 也在同一个文件中:
<?php
function test() {
echo $_POST["user"]; // Just an example of processing
}
?>
Run Code Online (Sandbox Code Playgroud)
但是,我还是遇到了问题!有谁有想法?
Dut*_*432 26
这不能以你所谈论的方式完成.PHP是服务器端,而表单存在于客户端.如果您不想刷新页面,则需要考虑使用Javascript和/或AJAX.
test.php的
<form action="javascript:void(0);" method="post">
<input type="text" name="user" placeholder="enter a text" />
<input type="submit" value="submit" />
</form>
<script type="text/javascript">
$("form").submit(function(){
var str = $(this).serialize();
$.ajax('getResult.php', str, function(result){
alert(result); // The result variable will contain any text echoed by getResult.php
}
return(false);
});
</script>
Run Code Online (Sandbox Code Playgroud)
它将调用getResult.php并传递序列化的表单,以便PHP可以读取这些值.任何getResult.php回声都将返回到result变量中的JS函数,test.php并且(在这种情况下)显示在警告框中.
getResult.php
<?php
echo "The name you typed is: " . $_REQUEST['user'];
?>
Run Code Online (Sandbox Code Playgroud)
注意此示例使用jQuery,第三方Javascript包装器.我建议你先进一步了解这些网络技术如何协同工作,然后再为自己复杂化.
你对网络的运作方式有很大的误解.
基本上,事情就是这样发生的:
test.php从您的服务器请求test.php运行,执行内部的所有内容,生成的HTML页面(包括您的表单)将被发送回浏览器action,在这种情况下是相同的文件),所以一切都从头开始(除了表格中的数据也将被发送).对服务器的新请求,PHP运行等等.这意味着页面将被刷新.您试图test()从onclick属性中调用.此技术用于运行客户端脚本,在大多数情况下,Javascript(代码将在用户的浏览器上运行).这与服务器端的PHP无关,它驻留在您的服务器上,只有在请求进入时才会运行.例如,请阅读客户端与服务器端编码.
如果你想在不引起页面刷新的情况下做一些事情,你必须使用Javascript在后台向服务器发送请求,让PHP做它需要做的事情,并从中获得答案.这种技术基本上称为AJAX,你可以使用Google找到很多很棒的资源(比如Mozilla的惊人教程).
小智 6
没有重新加载,使用html和php只是它不可能,但这可能非常类似于你想要的,但你必须重新加载:
<?php
function test() {
echo $_POST["user"];
}
if (isset($_POST[])) { // If it is the first time, it does nothing
test();
}
?>
<form action="test.php" method="post">
<input type="text" name="user" placeholder="enter a text" />
<input type="submit" value="submit" onclick="test()" />
</form>
Run Code Online (Sandbox Code Playgroud)
这是一个完整的PHP脚本来做你正在描述的,尽管毫无意义.您需要在服务器端与客户端进行阅读.PHP无法在客户端运行,您必须使用javascript与服务器进行交互,或者使用页面刷新.如果您无法理解,那么您将无法使用我的代码(或任何其他人)来为您带来好处.
以下代码在没有jQuery的情况下执行AJAX调用,并调用相同的脚本将XML流式传输到AJAX.然后它会<br/>在用户框下方插入您的用户名和一个div.
在尝试追求像AJAX这样先进的东西之前,请回去学习基础知识.你最终只会让自己感到困惑,并可能浪费别人的钱.
<?php
function test() {
header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" standalone=\"yes\"?><user>".$_GET["user"]."</user>"; //output an xml document.
}
if(isset($_GET["user"])){
test();
} else {
?><html>
<head>
<title>Test</title>
<script type="text/javascript">
function do_ajax() {
if(window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
} else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var xmlDoc = xmlhttp.responseXML;
data=xmlDoc.getElementsByTagName("user")[0].childNodes[0].nodeValue;
mydiv = document.getElementById("Test");
mydiv.appendChild(document.createTextNode(data));
mydiv.appendChild(document.createElement("br"));
}
}
xmlhttp.open("GET","<?php echo $_SERVER["PHP_SELF"]; ?>?user="+document.getElementById('username').value,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form action="test.php" method="post">
<input type="text" name="user" placeholder="enter a text" id="username"/>
<input type="button" value="submit" onclick="do_ajax()" />
</form>
<div id="Test"></div>
</body>
</html><?php } ?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
183213 次 |
| 最近记录: |