AJAX hívások ciklusban
Sziasztok!
Van egy formom, ezen x darab szövegmező. Ezek szerkesztés után AJAX post-tal egyenként is menthetők. A módosított, de még nem mentett mezők ID-it egy JS-tömbbe gyűjtögetem.
Az oldal elhagyásakor unonload-ra szeretném felkínálni a lehetőséget a módosított mezők mentésére. A következő formára gondoltam:A probléma a dologgal, hogy az AJAX-ot aszinkron módon meghívva csak az első cikluskör fut le.
Próbálkoztam szinkron módban is, az működik, de ha csak az oldalt frissítem, akkor a textboxokba nem a módosított értékeket írja ki, pedig menti a dolgokat, mert ha mégegyszer ráfrissítek, akkor már a módosított értékek jelennek meg.
Az lenne a kérdésem, hogyan lehetne ezt valahogy kultúráltan megoldani és vajon miért áll le asszinkron módban az első kör után?
és a teljes kód: (a prototype-ot használom)A treatmentUpdate függvény takarít egy kicsit a HTML doksiban, leveszi a mentést jelző ikont, megszünteti a szövegdoboz kijelölését, stb. Aszinkron módban az első körben ez szépen látszik is a háttérben, ezért lenne ez a megoldás szimpibb.
A segítséget előre is köszönöm,
Laci
■ Van egy formom, ezen x darab szövegmező. Ezek szerkesztés után AJAX post-tal egyenként is menthetők. A módosított, de még nem mentett mezők ID-it egy JS-tömbbe gyűjtögetem.
Az oldal elhagyásakor unonload-ra szeretném felkínálni a lehetőséget a módosított mezők mentésére. A következő formára gondoltam:
for(i=0; i<unsaved_ids.length; i++)
{
if(window.confirm('menteni akarod a(z) ' + $(unsaved_ids[i]).value + 'szövegő mezőt?'))
{
ide_jon_az_AJAX_fugveny();
}
}
Próbálkoztam szinkron módban is, az működik, de ha csak az oldalt frissítem, akkor a textboxokba nem a módosított értékeket írja ki, pedig menti a dolgokat, mert ha mégegyszer ráfrissítek, akkor már a módosított értékek jelennek meg.
Az lenne a kérdésem, hogyan lehetne ezt valahogy kultúráltan megoldani és vajon miért áll le asszinkron módban az első kör után?
és a teljes kód: (a prototype-ot használom)
function save_input()
{
for(i=0; i<unsaved_ids.length; i++)
{
if(window.confirm('Mented a megváltozott nevet: ' + '\n' + $(unsaved_ids[i]).value ))
{
var url = 'http://localhost/laser/update_kezeles.php?';
var kezelesnev = base64enc(escape($(unsaved_ids[i]).value));
var id = unsaved_ids[i];
var pars = 'kezelesnev=' + kezelesnev + '&id=' + id;
var myAjax = new Ajax.Request(
url,
{
method: 'post',
parameters: pars,
onComplete: treatmentUpdate,
asynchronous : false
});
alert('A kezelés változtatásai elmentve.');
}
}
}
A segítséget előre is köszönöm,
Laci
talán
igen,
Ahogy már írtam, szinkron módban végigviszi a fenti ciklust és ment is, de utána a régi értékek látszódnak pedig újratölti az oldalt, asszinkronban pedig az első kör után meghal.
Szóval van már egy félmegoldás, de ez még így elég gány.
biztos
aszinkronban a masodik keres el sem indul?
hali
vígan futkorászik php módosít, js módosítja DOM-ot (most az adott textArea innerHTML-jét de akármi lehetne), szóval :S unonload-ot ráköttöttem akárhova klikk-re azt meg window.unonloadra :)
ui: igazából class/komponensbe kellett volna rakni a fenti kódot, sípol is gagyi jelzőm :))) , de most erre van időm sry :)
de mostmár volt egy kicsi, refactoring után ugyanaz és mégis más :)
(csak az nézze aki már komolyabban foglalkozott js-el mert egyébként úgyse érti :) nem bántásból nem felvágásból, tény )
igen, azt hiszem ez lesz az!
Aludtam rá egyet, nyomtam egy kávét és most hajrá.
Nagyon köszönöm a segítséged,
Laci
debug
amiért írok, hogy úgynézki mintha nem használnád a firebug js debuggert, konzolt stb, ha tévednék akkor bocsi, de ennélkül elég nehéz szép kódot írni (nehéz rájönni mi működik, mi nem, mert prototype alatt azért lehet saját ötletekkel is próbálkozni :) )
http://encytemedia.com/blog/articles/2006/05/12/an-in-depth-look-at-the-future-of-javascript-debugging-with-firebug
no csak ennyi, jómunkát :)