如何在不重新加载页面的情况下直接从数据库验证输入?

时间:2012-08-29 13:53:06

标签: php jquery post

我只是一个PHP入门者,现在我想学习JQUERY,在我的学习过程中,我练习验证输入通常我只使用纯PHP代码验证我的输入,每次我验证输入页面重新加载现在我想改进做事我发现了一些文章,如http://api.jquery.com/jQuery.ajax/http://api.jquery.com/jQuery.post/(不能发布其他链接),但我更困惑,因为他们有不同的方法,我想使用的方法, JQUERY教程,但我没有找到任何好的教程,JQUERY的网站上没有使用数据库的教程,通常我的代码如下:

<form method="post">
<label for="Username">Username:</label>
<input id="Username" type="text" name="username">
<?php
session_start();
if(isset($_SESSION['msg'])){
$msg=$_SESSION['msg'];
echo '<label for="Username">'.$msg.'</label>';
?>
<input type="submit" name="reg">
</form>
<?php
if(isset($_POST['reg'])){
$result=//check username from database here
if($result){
$_SESSION['msg']='username not available.';
}
else {
$_SESSION['msg']='username available.';
}
}
?>

现在我想学习如何在不重新加载页面的情况下直接从数据库验证输入?我不知道我应该从哪里开始,在我的代码中添加什么。任何帮助,建议或建议对我来说都将是一个很大的帮助:)

2 个答案:

答案 0 :(得分:0)

编写验证脚本,就好像您希望页面刷新一样。而不是输出错误消息,将它们放在JSON数组中并打印JSON数据。然后从AJAX函数调用脚本。这真的很简单。

<?php
// validate.php

$sampleInput_number = isset($_POST['sampleInput_number']) ? $_POST['sampleInput_number'] : "";

$errors = array();
if (trim($sampleInput_number) == "" || !is_numeric(trim($sampleInput_number)) {
    $errors[] = "SampleInput_number must be a number!";
}

// sample input must also match a value from the database
if (!matchesDBValue($sampleInput_number)) {
    $errors[] = "SampleInput_number must match a value from the database!";
}

function matchesDBValue($value) {
    $retval = false;

    // compare to db values here...

    return $retval;
}

echo json_encode($errors);

您的表单看起来像这样:

<form action="" method="post" id="theForm">
    <input type="text" name="sampleInput_number" id="sampleInput_number" />
    <input type="button" id="formSubmit" value="Submit" />
</form>

你的javascript看起来像这样:

<script language="javascript" type="text/javascript">
    $(#formSubmit).on("click", function() {
        $.post("validate.php", 
            {
                sampleInput_number: $("#sampleInput_number").val()
            }, function(data) {
                // check returned json data
                // perform action based on results

                if (no_errors) {
                    $("#theForm").submit();
                }
            }, "json"
        );
    });
</script>

答案 1 :(得分:0)

首先,在你的表单中添加一个onSubmit函数

 <form name='myform' type='POST' action='http://www.action.fr' onSubmit="return check_form()">

你可以在像这样的ajax中做到这一点

function check_form()
 {
    var user = $('#Username').val(); // Username is the id of your input
    var password = $('#password').val(); // password is the id of your input
    $.ajax(
   {
     type:"POST", // or get as you want
     url:"myfile.php", // it is the php file which can do the job
     data: "user="+user+"&password="+password, // the param to send to your file, 
     success:function(msg)
     {
          ;// msg is the result of your 'myfile.php', everything you write is in the msg var

     }
  });
}

在你的php文件中,你可以得到这样的数据:

 $user = $_POST['user'];
 $password = $_POST['password'];
 // if your type is get then use $_GET instead of $_POST

告诉我你的代码是否有任何问题。