在不改变页面的情况下在php中回应

时间:2011-04-06 21:33:07

标签: php html echo

我的网站上有一个简单的输入表单供人们输入提交信息。在他们没有输入任何内容的情况下,代码看起来像这样:

这是form.php

if ($_POST['q'])  == NULL ){
   echo "Please enter your information"

代码工作得很好,但它将用户发送到带有echo的form.php,我想让它在输入框正下方的主页index.html上回显 - 基本上它不会离开这页纸。这是可行的PHP或我需要一些JavaScript。我本来想找到方法来做这个,但我不知道这个方法叫什么。

谢谢!

5 个答案:

答案 0 :(得分:0)

不要在网址中设置操作,它会提交给自己,如果仍然无法工作,则需要重写规则。

答案 1 :(得分:0)

如果在输入字段下面有一个值else,则可以将其回发到自身,然后将页面重定向到post.php?q = value。

<?php
$qisempty = false;
if(!empty($_POST['q']))
{
    header("Location:http://../post.php?q=".$_POST['q']);
}
else
    $qisempty = true;
?>
    <input name="q" type="text">
    <?php if($qisempty) echo "Please enter your information";?>

答案 2 :(得分:0)

如果您不想离开页面,则需要使用Javascript。将onSubmit添加到表单,然后让您调用的函数返回false,如果输入未完成且不应提交表单。

答案 3 :(得分:0)

你可以使用AJAX来做这件事。当您不想重新加载页面以在特定位置执行任务或者HTML页面的Div时,AJAX非常适合此类问题。

对于您的问题,您需要创建一个包含表单的HTML文件,并通过AJAX提交。并通过相同的AJAX获得您的回复。

<script type="text/javascript">
function submit_ajax(val1,val2,param1,param2,subfile){
var http = new XMLHttpRequest();
var url = subfile;
var params = val1+"="+param1+"&"+val2+"="+param2;
http.open("POST", url, true);

//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

http.onreadystatechange = function() {//Call a function when the state changes.
    if(http.readyState == 4 && http.status == 200) {
        alert(http.responseText);
        //Remove the alert and use whatever you want to do with http.responsetext like
    // document.getElementById("YourDiv").innerHTML=document.getElementById("YourDiv").innerHTML +http.responsetext
    }
}
http.send(params);
}
</script>
</head>
<body>


<form>
<input type="text" id="user" value="user" name="user" />
<input type="password" id="password" value="pass" name="pass" />
<button onclick="submit_ajax(user.name,password.name,user.value,password.value, "submit_file.php");">Submit</button>
</form>

<div id="YourDiv">
<!--Something appears here after callback-->
</div>

这是第一页。现在在您的PHP文件中使用您的脚本(可能是submit_file.php),然后通过验证或其他东西在您的div中回显您想要的文本..样本将是

<?php

$username=$_POST['user'];
$password=$_POST['pass'];

if(validateuser($username,$password)){
    if(checkuserpass($username,$password){
        echo "You were successfully logged in!";
    }
echo "Sorry Username/Password Mismatch";
}
else {
echo "There was an error in your input!Please Correct";
}
?>

希望你得到你想要的东西......

答案 4 :(得分:-1)

最简单的方法是将错误消息分配给一个名为(例如$ errorMsg)的变量 使用回声或打印功能在页面上打印。

<?php

    if ($_POST['q'])  == NULL ){
       $errorMsg =' Please enter your information';
    }

    ?>

将此代码放在您希望出现错误的位置

<? print $errorMsg; ?>