0

これが本当にばかげていると思われる場合は、お詫び申し上げます。検索しましたが、答えが見つからないようです。私がやろうとしていることを説明できることを願っています。

データベースにクエリを実行できるようにしたいのですが、その中にレコードがある場合はスパン/div にレコードを表示するか、存在しない場合は not found エラー メッセージを表示します。

ユーザー名がデータベースにあるかどうかを確認するためにjqueryをチェックして実行しています。知りたいのは、これを修正してすべてのデータを取得し、元のページのスパン/ divに表示するのがいかに簡単かということです。

これは私が持っているjqueryです:

$(document).ready(function () {
    $('#username').keyup(username_check);
});

function username_check() {
    var username = $('#username').val();
    if (username == "" || username.length < 2) {
        $('#username').css('border', '1px #D5D5D5');
        $('#cross').hide();
        $('#tick').hide();
    } else {

        jQuery.ajax({
            type: "POST",
            url: "check.php",
            data: 'username=' + username,
            cache: false,
            success: function (response) {
                if (response == 1) {
                    $('#username').css('border', '2px #C33 solid');
                    $('#tick').hide();
                    $('#cross').fadeIn();
                } else {
                    $('#username').css('border', '2px #090 solid');
                    $('#cross').hide();
                    $('#tick').fadeIn();
                }

            }
        });
    }
}

結果を呼び出し元のページに戻す方法がわからないため、別のページに投稿するのではなく、1 つのページでこれらすべてを実行し、同じページからデータベースにクエリを実行できますか?

私がやりたいことを説明できたと思います。していない場合は申し訳ありません

PHPコードは次のとおりです。

$username = trim(strtolower($_POST['username'])); $username = mysql_escape_string($username); $query = "SELECT adbkid FROM person WHERE adbkid = '$username' LIMIT 1"; $result = mysql_query($query); $num = mysql_num_rows($result); echo $num; mysql_close()
4

4 に答える 4

0

"1" を返す代わりに、次のような json 応答を返します。

   /* record exists */
   {status:1, html:'server generated message about record'} 
   /* doesn't exist */
    {status:0} 

statusこれにより、応答データ値に基づいて css を変更できます

$.postajax 短縮形を使用できます:

$.post('check.php',{username: username},  function(response){
    var upDateElement=$('#spanID');

    if(response.status && response.status== 1){
        $('#username').css('border', '2px #C33 solid'); 
        $('#tick').hide();
        $('#cross').fadeIn();

        upDateElement.html( response.html)


    }else{
        $('#username').css('border', '2px #090 solid');
        $('#cross').hide();
        $('#tick').fadeIn();

        upDateElement.html('Message html for no record found')


    }
},'json')
于 2012-06-27T23:37:19.923 に答える
0

PHP で文字列を出力し、そのテキスト値を jQuery ($('#element').val(responseFromServer); または$('#element').html(responseFromServer);

于 2012-06-27T23:24:01.487 に答える
0

通常、サーバーでホストされているページに ajax リクエストを送信します。したがって、サーバーを介さずにデータベースに直接アクセスすることはできません。データベースにクエリを実行する関数をサーバーに記述し、ajax を使用して JavaScript からその関数を呼び出す必要があります。

于 2012-06-27T23:24:20.577 に答える
0

check.php

$data = array();
$data['exists'] = false;

if(!isset($_POST['username'])) {
    echo json_encode($data);
    exit();
}

$username = mysql_escape_string($_POST['username']);
$query = "SELECT adbkid FROM person WHERE adbkid = '$username' LIMIT 1";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);

if(count($row) == 1) {
    $data = $row;
    $data['exists'] = true;
}

return json_encode($data);

あなたのjQueryから:

success: function(response) {
    /**
     * For instance, for a table with id, username, password and email you have 
     * data.exists = true/false;
     * data.id = 1;
     * data.username = 'foo';
     * data.password = 'sample data password';
     * data.email = 'foo@bar.com';
     */
    if(response.exists === true) {
        $('#username').val(response.username);
        $('#email').val(response.email);
    }
}
于 2012-06-27T23:30:40.683 に答える