ajax posílá více requestů
- ondrusu
- Člen | 118
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
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){...});