0

私は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.';
}
}
?>

ここで、ページをリロードせずにデータベースから直接入力を検証する方法を学びたいですか?どこから始めればいいのか、コードに何を追加すればいいのかわかりません。ヘルプ、アドバイス、提案は私にとって本当に大きな助けになります:)

4

2 に答える 2

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>
于 2012-08-29T14:00:16.477 に答える
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

私のコードに問題があるかどうか教えてください。

于 2012-08-29T14:07:14.537 に答える