jQuery Ajax (beforeSend et complet) fonctionne correctement sur FireFox mais pas sur IE8 et Chrome

J'utilise de l'ajax de jQuery version 1.4.1 dans mon application MVC (mais la question que je suis en discussion a été de même avec l'ancienne version jQuery 3.2.1) ainsi, à vérifier lors de l'enregistrement du client si le nom d'utilisateur est déjà enregistré. Que l'utilisateur clique sur "Vérifier la Disponibilité", je suis en train de montrer une image complexe à la place du bouton (en fait cacher le bouton vérifier et montrer l'image) lors de la vérification de la disponibilité sur le serveur, puis l'affichage d'un message. C'est une Synchronisation appel (async: false) et j'ai utilisé beforeSend: et complète: pour afficher et masquer l'image complexe et le bouton coche. Cette chose fonctionne bien sur Firefox, mais sous IE 8 et Chrome, ni le occupé de l'image apparaissent ni le bouton vérifier les peaux plutôt le bouton est resté pressé comme toute chose a pendu. Disponibles et non disponibles les messages s'affichent correctement. Ci-dessous le code:

HTML dans un Contrôle Utilisateur (ascx):

<div id="available">This Username is Available</div>

div id="not_available">This Username is not available</div>

<input id="txtUsername" name="txtUsername" type="text" size="50" />&nbsp;

<button id="check" name="check" type="button">Check Availability</button>

<img id="busy" src="/Content/Images/busy.gif" />

Sur le dessus de ce contrôle utilisateur, je suis un lien externe fichier javascript qui a le code suivant:

$(document).ready(function() {

    $('img#busy').hide();
    $('div#available').hide();
    $('div#not_available').hide();

    $("button#check").click(function() {
        var available = checkUsername($("input#txtUsername").val());

        if (available == "1") {
            $("div#available").show();
            $("div#not_available").hide();
        }
        else {
            $("div#available").hide();
            $("div#not_available").show();
        }
    });
});


function checkUsername(username) {

    $.ajax({

        type: "POST",

        url: "/SomeController/SomeAction",

        data: { "id": username },

        timeout: 3000,

        async: false,

        beforeSend: function() {

            $("button#check").hide();

            $("img#busy").show();

        },

        complete: function() {

            $("button#check").show();

            $("img#busy").hide();

        },        

        cache: false,

        success: function(result) {

             return result;

        },

        error: function(error) {

            $("img#busy").hide();

            $("button#check").show();

            alert("Some problems have occured. Please try again later: " + error);

        }

    });

}
Ce qui est arrivé à la communauté? 18 personnes ont vu cette question, mais personne ne répondit même après 2 jours. Est-ce vraiment si compliqué que ça, ou je n'ai pas la poser correctement?
si vous définissez isvalid à true ou à false, êtes-vous sûr que vous pouvez le comparer avec '1'. si(disponible) devrait être suffisant... Ce ne sera pas répondre à votre question 🙂
Merci, oui j'ai remarqué que les et tout en essayant de trouver le problème, j'ai aussi corrigé cette chose, mais comme prévu, il n'a pas du tout différent. Je vais mettre à jour le code ci-dessus avec ce changement.

OriginalL'auteur Farhan Zia | 2010-02-09