0

これは ajax にユーザーの存在をチェックさせるためのフォームです。

<!DOCTYPE html>

<html>
    <head><title>Register new user!</title>
    <script src="jquery-1.7.1.min.js"></script>
    </head>
    <body>
        Username:
        <input type="text" name="username" id="username"/><span id="user"></span><br/>
        Password:
        <input type="password" name="password" id="password"/><br/>
        <input type="button" value="Register" name="submit" id="submit" onclick="register_user();"/>
    </body>
    <script>
        function register_user()
        {
            $.ajax(
                {
                    type:"POST",
                    data:username,
                    url:"userexists.php"                    
                })
            .fail(function()
                  {
                    $('#user').html("This user already exists");
                  }
            );                
        }
    </script>
</html>

そして、ここに userexists.php モジュールがあります

<?php
    // connection to the db
    define(IPHOST,"localhost");
    define(DBPASSWORD,"");
    define(DBUSER,"root");
    define(DATABASE,"ajaxtest");
    define(TABLENAME,"at");

    $conn=mysql_connect(IPHOST,DBUSER,DBPASSWORD) or die(mysql_error());
    mysql_select_db(DATABASE) or die(mysql_error());
    $username=$_POST('username');
    $sql="SELECT username FROM ".TABLENAME." WHERE username=".$username;
    $query=mysql_query($sql);
    if(0!=mysql_numrows($query))
    {
        //
    }
    else
    {

    }
?>

しかし、私は ajax 関数が実際にどのように機能するかを本当に理解するのに行き詰まっています。たとえば、入力したユーザー名が使用されていることを知った後、空白のフィールドに何を入力すればよいでしょうか? ajax がまったくわかりません。

4

1 に答える 1

0

JSON でエンコードされた配列を返す必要があります ( http://php.net/manual/en/function.json-encode.phpを参照)。基本的に次のようなものが返されます。

if(0!=mysql_numrows($query))
    {
        echo '{';
        echo '"myMessage":"'.$username." was found'",';
        echo '"myStatus":"1",';
        echo '}';
    }
    else
    {
        echo '{';
        echo '"myMessage":"'.$username." was NOT found'",';
        echo '"myStatus":"0",';
        echo '}';
    }

次に、AJAX は次のように処理します。

    $.ajax({
        type: "GET",
        url: "userexists.php",
        data: dataString,
        dataType: "json",
        success: function(data) {
            if(data.myStatus== 'Y') {
                var msg = data.myMessage;
            }
        }
    });

(これはかなり広い答えだと思いますが、JSON結果を使用したPHPからのAJAX呼び出しは、完全に理解するために複数の段落の答えを保証します。 jquery AJAX GET JSON results をグーグルで検索すると、多くの良い例があります)

AJAX Success:/Failure: は、AJAX 呼び出しが成功したかどうかであり、呼び出されたページが返されるかどうかとは関係ありません。たとえば、呼び出したページが存在しない場合、またはコードがクラッシュした場合、Failure が発生します。スクリプトは何を返すかを決定します。そのページが送信するものを取得するには、AJAX 呼び出しが成功する必要があります。

于 2012-04-28T05:25:03.953 に答える