2017-07-04 13 views
1

私はデータベースのユーザー名をチェックする小さなスクリプトを用意しています。現在のところ、以下のコードはjQuery v1.7.2で完全に動作しますjqueryの新バージョンでAjaxリクエストが実行されない

現在のjQueryバージョン、つまり で動作するように更新する必要がありますが、現在のjqueryバージョンを使用しようとすると、 else。

$(document).ready(function() { 
    $("#username").keyup(function() { 
    var username = $("#username").val(); 
    var msgbox = $("#status"); 

    if (username.length > 3) { 
     $("#status").html(''); 

     $.ajax({ 
     type: "POST", 
     url: "includes/user_check.php", 
     data: "username=" + username, 
     success: function(msg) { 
      $("#status").ajaxComplete(function(event, request) { 
      if (msg == 'OK') { 

       $("#username").removeClass("red"); 
       $("#username").addClass("green"); 
       msgbox.html('Available'); 
      } else { 
       $("#username").removeClass("green"); 
       $("#username").addClass("red"); 
       msgbox.html(msg); 
      } 

      }); 
     } 
     }); 
    } else { 
     $("#username").addClass("red"); 
     $("#status").html('<font color="#cc0000">To Short</font>'); 
    } 
    return false; 
    }); 
}); 
+0

あなたの質問を言い換えることができますか? –

+1

ようこそスタックオーバーフロー!デバッグのヘルプ(**はなぜこのコードが動作しないのですか?**)には、目的の動作、特定の問題またはエラー、およびそれを再現するのに必要な最短コード**を質問に含める必要があります**。 **明確な問題文**のない質問は、他の読者には役に立たない。参照:[最小限で完全で検証可能なサンプルの作成方法](https://stackoverflow.com/help/mcve) – Parker

+0

言い換えですか?私は単に自分の能力を最大限に説明しています – Epic

答えて

0

jQueryを使って自分の慣れていない場合は、あなたが常にjQueryの移行を使用することができますストレートな答えを得ることができません。ここで助けを得ることができない場合、これはあなたを助けるかもしれません。

+0

ありがとうございました。別のファイルを追加したくありませんでしたが、感謝しました。 – Epic

2

ajaxCompleteが間違った場所に取り付けられています。 documentation for .ajaxComplete

補足事項によれば :jQueryの1.9のよう

は、.ajaxComplete()メソッドを添加したものを含むjQueryのグローバルAjaxのイベントのためのすべてのハンドラは、文書に添付されなければなりません。

グローバルオプションをfalseに設定して$ .ajax()または$ .ajaxSetup()を呼び出した場合、.ajaxComplete()メソッドは起動しません。

この部分を変更してください:$("#status").ajaxComplete(function(event, request) {

UPD:実はあなたもあなたの実装では、この機能は必要ありません。 success

+0

Jqueryの新しいバージョンを実行しているときにすべてが表示されますChecking – Epic

1

この回答はjQueryのバージョンによって異なりますが、3.0では成功、エラー、完全コールバックは削除されています。そして、doneと置き換える必要があります。常に&に失敗してください。

http://api.jquery.com/jquery.ajax/

すなわち

$.ajax({ 
    type: method, 
    url: url, 
    data: "" 
}).done(function (resp) { 

}).fail(function (resp) { 

}).always(function() { 

}); 
+0

あなたは間違っています。拡張メソッドとしては推奨されていませんが、パラメータとしては使用されません。 https://stackoverflow.com/a/15821199/4121714をご確認のうえ、ご提供いただいたドキュメントをよくお読みください。 msgstr "jqXHRオブジェクトがjQueryから返されました。ajax()はjQuery Deferredであり、歴史的にはsuccess、error、およびcompletionのargumentsオブジェクトに一致する名前を持つ3つの追加メソッドがありました。これは、返されたオブジェクトがDeferredのように扱われるべきであることを認識しなかった人々を混乱させることがよくあります。 jQuery 3.0以降、これらのメソッドは削除されました。代わりに、Deferred ...を使用してください。上記のコメントを参照してください。 – SouXin

関連する問題