0

ajax/phpスクリプトに問題があります。

これは、ユーザー登録のためのユーザー名の可用性を確認するためのものです。

javascript

$(document).ready(function()
{
    $("#username").change(function()
    {
        var usr = $("#username").val();
        if(usr.length >= 4)
        {
            $("#status").html('<img src="./style/images/loading.gif">&nbsp;Checking availability...');

            $.ajax(
            {
                type: "POST",
                url: "./ps/ajax_validation.php",
                data: "username="+ usr,
                success: function(msg)
                {
                    $("#status").ajaxComplete(function(event, request, settings)
                    {
                        if(msg == 'OK')
                        {
                            $(this).html('&nbsp;<img src="./style/images/tick.gif" align="absmiddle">');
                        }
                        else
                        {
                            $(this).html(msg);
                        }
                    });
                }
            }); 

        }
        else
        {
            $("#status").html('<font color="red">The username should have at least <strong>4</strong> characters.</font>');
        }
    });
});

html

...
<input class="login_reg_field" id="username" name="username" type="text" value="<?php echo @$d['username']?>" />
<div id="status"></div>
...

ajax_validation.php

<?php
include("../core/config.php");
if(isset($_POST['username'])){
    $username = $_POST['username'];
    $test = $user->checkUsernameAvaible($username); //Return True if Username IS Avaible
    if(!$test){
        echo '<font color="red">The nickname <STRONG>'.$username.'</STRONG> is already in use.</font>';
    }else{
        echo "OK";
    }
}
?>

phpスクリプトは機能しています。$_GET変数を使用して手動で試しました。

フォームを試してみると、フォームはオンのままでChecking avaibility...、FirefoxコンソールでJavascriptエラーは発生しません。また、Tamper Dataで、ajaxリクエストが行われていることを確認しました。

$("#status").ajaxComplete(function(event, request, settings){この行の後にアラートを試しましたが、アラートがポップアップしないため、問題が発生しているようです。

4

2 に答える 2

0

アップデート..

成功は、ajax呼び出しが成功したときに呼び出されます。したがって、そこでajaxCompleteを呼び出す必要はありません。(問題があると思われる場合)。

successリクエストが成功した場合に呼び出される関数。関数には3つの引数が渡されます。サーバーから返されるデータ。dataTypeパラメーターに従ってフォーマットされます。ステータスを説明する文字列。およびjqXHR(jQuery 1.4.xではXMLHttpRequest)オブジェクト。jQuery 1.5以降、成功設定は関数の配列を受け入れることができます。各関数は順番に呼び出されます。これはAjaxイベントです。

応答データを確認して、自分の作業を行うことができます。

 success: function(msg){
           if(msg == 'OK')
           {
              $(this).html('&nbsp;<img src="./style/images/tick.gif" align="absmiddle">');
           }
           else
           {
              $(this).html(msg);
           }

         }

問題はここにあると思います

$("#username").change(function()
{

change()oninput textは、入力フィールドの外側をクリックしたときにのみ発生します。//一度試してください。

必要なのはkeyup()

$("#username").keyup(function()
{
于 2013-01-29T09:01:11.030 に答える
0

わかりました自分の質問に答えて、解決しました。

代わりに使用することを知らせてくれたイタチに感謝したい.donesuccess:

問題はそこにありました。

スクリプトの改訂された作業部分は次のとおりです。

    var req = $.ajax(
    {
        type: "POST",
        url: "./ps/ajax_validation.php",
        data: "username="+ usr,
    }).done(function(msg)
    {
        if(msg == 'OK')
        {
            $("#status").html('&nbsp;<img src="./style/images/tick.gif" align="absmiddle">');
        }
            else
        {
            $("#status").html(msg);
        }

    });
于 2013-01-29T09:40:06.590 に答える