UPDATE vorm validatiefout in javascript

stemmen
0

uit de onderstaande codering, als sommige gegevens verkeerd zijn, zal het alarmeren vals. het werkt prima als de bevestigde pw is niet hetzelfde als het wachtwoord. echter, als de inlogID controle lijkt moet een aantal problemen. Het alert true789 valse false123 false456 respectievelijk. waarom de consequentie is niet false123 false456 false789 onwaar? als gevolg van de vertraging van JSON? hoe het op te lossen?

var result = true;

$('#test').click(function(){
    validation();
    alert(result);  
});

function validation(){  
    result = true;
    var loginID = $(#loginID).val();
    var role = $(#role).text();

    // check Login Name
    if (loginID ==  || loginID == null){
        $('#errorID').empty();
        $('#errorID').append(
            '<h6>' + The Login Name cannot be empty + '</h6>'
        );
        $(#errorID).show();
        result=false;
    } else {
        $.ajax({
            type: GET,
            dataType: jsonp,
            jsonpCallback: jsoncallback,
            data: {
                ID: loginID,
                role: role          
            },
            url: http://mydomain.com/checkID.php?jsoncallback=?,

            success: function(data){
                if (data[0].data.user_name!=){    
                    result=false;
                    alert(result+123);
                    $('#errorID').empty();
                    $('#errorID').append(
                        '<h6>' + The Login Name  + data[0].data.user_name + 
                         is used. + '</h6>'
                    );
                    $(#errorID).show();
                    alert(result+456);
                }
            },
            error: function(jqXHR, textStatus, errorThrown){
                alert(Request failed:  + textStatus + errorThrown);
                result=false;
            }
        }); //end of ajax
    }
    alert(result+789);            
    return result;
} // end of #validation
De vraag is gesteld op 22/03/2013 om 05:53
user
In andere talen...                            


1 antwoorden

stemmen
1

de ajax gesprek wordt asynchroon gedaan. het in de functie ajax () voert vervolgens op en als het resultaat uiteindelijk zal komen de waarschuwingen of wat je hebt in de event handlers zal leiden. U kunt toevoegen async : falseaan uw ajax gesprek dat zal veranderen hoe de dingen lopen. De 789 alert kan alleen worden uitgevoerd nadat de ajax oproep wordt gedaan en beantwoord. Ook als uw ajax oproep wordt gedaan om uw domein dan heb je niet nodig de jsonpCallback en als de headers van de respons zijn application/jsondan moet je dataType verwijderen zo goed en laat het aan jQuery om een goed resultaat

antwoordde op 22/03/2013 om 06:12
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more