Autor Zpráva
Magnus123
Profil
Ahoj.

Mohl by mi někdo vysvětlit, proč mi tohle nefunguje? Přesněji mi to nefunguje až u "throw result.error". Proměnné mám deklarované všechny (v závislosti na jazyku).

function register()
{
    var default_submit_button_value = $("#submit_register").val();
    var data = {
        "name":                                $("#name").val(),
        "password":                        $("#password").val(),
        "repeat_password":        $("#repeat_password").val(),
        "email":                            $("#email").val(),
        "control":                        $("#control").val()
    };
    
    $("#submit_register").attr("disabled", "disabled").addClass("disabled");
    
    try {
        if (data.name == "") {
            throw name_not_filled;
        }
        if (data.password == "") {
            throw password_not_filled;
        }
        if (data.repeat_password == "") {
            throw repeat_password_not_filled;
        }
        if (data.email == "") {
            throw email_not_filled;
        }
        if (data.control == "") {
            throw control_not_filled;
        }
        if (data.name.length < 3) {
            throw name_too_short;
        }
        if (data.name.length > 20) {
            throw name_too_long;
        }
        if (data.password !== data.repeat_password) {
            throw password_mismatch;
        }
        if (parseInt(data.control) !== 5) {
            throw control_bad;
        }
        
        $.post("?page=registerUser", data, function(output) {
            var result = eval("(" + output + ")");
            if (result.error != "") {
                throw result.error;
            }
        
            $("#name").val("");
            $("#password").val("");
            $("#repeat_password").val("");
            $("#email").val("");
            $("#control").val("");
        
            $("#submit_register").val(default_submit_button_value).attr("disabled", "").removeClass("disabled");
        
            $("#result").html(result.callback.message);
        });
    } catch (e) {
        alert(e);
        $("#submit_register").val(default_submit_button_value).attr("disabled", "").removeClass("disabled");
    }
}
Chris Brown
Profil *
a co ti zobrazuje firebug ako response? nemas tam nahodou 404 alebo nieco take?
Magnus123
Profil
Píše mi to "uncaught". Když to "throw result.error" hodím do dalšího try bloku, tak to jde, ale nevím, jak udělat, aby to přeskočilo na blok catch dole.
Chris Brown
Profil *
JS je OK, podla vsetkeho je nejaka chyba na strane servera
Chamurappi
Profil
Reaguji na Magna123:
nevím, jak udělat, aby to přeskočilo na blok catch dole
Pokud vím, tak nijak. Celý try-catch je už v okamžiku, kdy přijde odpověď ze serveru, dávno zpracovaný.

Mimochodem používat systém výjimek k tomuto účelu mi přijde trošku divné.
Magnus123
Profil
Chamurappi:
Díky. Jak bys jinak vyřešil to, aby se při nesplněné podmínce nezpracovával kód dál a spustila se jedna akce? Jde to i jinak, než vytvářet funkci?

if (value == false) {
  akce();
  return;
}

Takto budu muset do každé té podmínky psát tento kód a nepřijde mi to jako nejvhodnější řešení.
Chamurappi
Profil
Reaguji na Magna123:
aby se při nesplněné podmínce nezpracovával kód dál
Dal bych ho do else. Co se ti nelíbí na konstrukci if - else if - else if - ... - else if - else?

Proč se vůbec snažíš o to, aby se nezpracovával další kód? Nevím, jak ty, ale já z pohledu uživatele docela nesnáším, když mě formulář bombarduje chybovými hláškami po jedné. Proč neprovedeš všechny kontroly (možná až na tu AJAXovou) a nenahlásíš všechny chyby naráz?

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0