ajax posílá více requestů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ondrusu
Člen | 118
+
0
-

Ahoj, mám problém se kterým si vůbec nevím rady a prosím o pomoc.
Mám tabulku uživatelů, na tlačítko editace si zavolám bootstrap modal okno.
V default.latte mám includovaný ruční html formulář

{include '../forms/user.latte'}

Otevře se pěkný bootstrap okno a na stisk tlačítka

$(document).on("click", submitId, function (event) {
.
.
if (valid === true) {
  l.start();
  sendData(id, handler, dialogId);
}

V proměnné l je Ladda.create(document.querySelector(submitId));
a funkce sendData nastvuje proměnné a provádí se send funkce vypadá takhle

function sendDataSimple(handleAction, dialogId, dataObject) {
    $.nette.ajax({
        type: 'POST',
        url: '?do=' + handleAction,
        data: {
            'data': dataObject
        },
        success: function (data) {
            dialogReset(dialogId);
            $(dialogId).modal('hide');
        },
        error: function (jqXHR, textStatus, errorThrown) {

        }
    });

}

A problém je ten, že kliknu na tlačítko uložit odešle se ajax jednou, zavře se bootstrap okno a reloaduje snippet. Otevřu si editaci znova kliknu na „uložit“ a ajax se provede dvakrát atd.
To že se ajax provede dvakrát to znamená že se provede vše co je v teto funkci

$(document).on("click", submitId, function (event) {

Nevěděli by jste kde může být chyba??
Předem děkuji za odpověď.

Jiří Nápravník
Člen | 710
+
+1
-

Ten javascript nebo spise nastaveni tech handleru mas v tom snippetu ne? Timpadem se ti s kazdym nactnenim napoji znovu. Musis pred to on(‚click‘). dat taky off() na ty konkretni tlacitka, kde uz ten event mas.

Nejlepsi mas tan handler si dat nekam do promenne
tedy neco takoveho:

var handler = function(event){...};
$(document).off('click', submitId, handler).on("click", submitId, handler);

pokud zadny jiny handler nepotrebujes na click na to tlacitko, tak muzes udelat

$(document).off('click', submitId).on("click", submitId, function(event){...});
ondrusu
Člen | 118
+
0
-

paráda, funguje děkuji moc.