服务器端验证结果显示在同一个浏览器窗口中


Server side validation results appear in the same browser window

简单的HTML表单:

<form action="test.php" method="post" name="my_form" id="my_form" >
    <input name="c_name" type="text" id="c_name"  maxlength="90"/>
 </form>

test.php,代码如下:

<?php
    $name=$_POST['c_name'];
    if ((!isset($name)) || ($name==''))
    {
      echo 'Fill in the name';        
    }
    else
    {
      echo $name;
    }
?> 

现在,我希望在表单提交时执行以下操作:

1)不将当前浏览器窗口保留为PHP以显示相应的消息。我希望表单窗口保持在那里。

2)我不想要一个简单的响应消息。例如,我想而不是"填写名称"一个更图形化的方式来交互,如使隐藏的div出现;换句话说,我想在PHP中编写Jquery并使其执行。这可能吗?如何实现?

我知道我必须使用AJAX,但我不知道该怎么做!你能给我一些代码来实现以上两件事吗?

我相信,如果您对这一切都是新手,那么您最好使用jQuery。在这里可以找到一个ajax示例:http://api.jquery.com/jquery.ajax/

在这种情况下,

代码是q位扩展的。因为您不仅需要检查它是否为空,还需要preg_match它。这意味着您要确保用户发送的内容是您真正想要的(而不是破坏或入侵或注入您的服务器,这很重要)。

所以看到这个,我建议阅读一个教程,就像这样(快速谷歌搜索):http://code.tutsplus.com/tutorials/5-ways-to-make-ajax-calls-with-jquery--net-6289

在进入下一步之前熟悉一些基本知识。

得到你想要的效果。我喜欢使用jQuery表单插件,它可以很容易地从任何现有的表单创建一个AJAX表单。然后只需在提交的.php文件中回显结果(提示:也可以用样式回显div)。下面的例子,假设你的页面中包含了jQuery表单插件,它将使用AJAX提交表单,并将返回的结果返回给id=status的div。

$(document).ready(function(){
    var status = $('#status');
    $('#my_form').ajaxForm({
        beforeSend: function() {
            status.empty();
        },
        complete: function(xhr) {
            status.html(xhr.responseText);
        }
    });
});