Hirdetés

Új hozzászólás Aktív témák

  • Jim-Y
    veterán

    Jaja, ez így van, de arra figyelj oda, hogy az async paraméter jQuery 1.8-astól kezdve deprecated:
    http://api.jquery.com/jQuery.ajax/

    "As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is deprecated; you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such as jqXHR.done() or the deprecated jqXHR.success()."

    Érdemes átgondolnod, hogy biztosan jó-e az, hogy egy sima bejelentkezés miatt szinkronná teszed a kommunikációt, ha egyébként általában az oldaladon az aszinkron kommunikációt erősen használod: szerintem ebben az esetben sem indokolt. Hadd döntse el a felhasználó, szeretné-e megvárni, míg megkapja a választ a szervertől, addig meg tegyél ki neki egy töltődő ikont. Zavaró lehet, ha addig használhatatlan a felület. Vagy legyen hagyományos lap-újrafrissülős megoldás. Vagy használd a jQuery BlockUI Plugint (vagy egy hasonló megoldást).

    Nekem az aszinkron ajaxxal az a bajom, hogy a success ágban kéne mindent lekezelni, vagy meghívni egy másik függvényt, míg amikor aszinkron csináltam, akkor tudtam írni ilyen függvényt ami a saját logikámnak jobban feküdt:

    Server.prototype.login = function(username, password){
    var result;
    $.ajax({
    url: "php/server.php",
    type: "POST",
    data: {
    action: "login",
    username: username,
    password: password
    },
    dataType: "json",
    success: function(response){
    if(response.success){
    result = response.success;
    }
    },
    async: false
    });
    return result;
    }

    A rossz eset nincs lekezelve, de az kényelmessé teszi a szinkron hívást, hogy vissza tudok térni belőle, ez alkalmazás szinten így néz ki:

    $("#loginBtn").click(function(){
    uName = $("#unameField").val();
    pwd = $("#pwdField").val();
    if(uName === "" || pwd === ""){
    alert("Missing username or password!");
    } else {
    if(server.login(uName, pwd) == 1){
    // akarmi
    client = new Client(uName, pwd);
    }
    }
    });

    Most ha mindent amit sikeres login után akarnék véghezvinni az ajax succes ágában hívótt metódusban kéne megcsinálni, az rossz lenne :D

Új hozzászólás Aktív témák