Autor Zpráva
JD
Profil *
Pracuji s knihovnou jQuery. Ajaxový požadavek volám přibližně takto

proměnná = $.ajax({
method: ... , url: ... , data: ...
beforeSend: ...
success: function(html){ ...

}
});

Pokud opustí kurzor myši daný prvek, chci volání ajaxu stornovat, to dělám následovně:

$('.prvek').bind(
'mouseout',
function()
{
promenna.abort();
});

měl jsem za to, že by to mělo fungovat, ale zdá se, že ne. Máte někdo nějaké zkušenosti?
Poradíte?
JD
Profil *
Lidi nemáte někdo zkušenosti aspoň se stornováním požadavku klasického javascriptového ajaxového volání, ne nutně přes jQuery? Na netu k tomuhle moc kloudného napsáno není.
joe
Profil
Nejsem si jistý, ale podlě mě když odešleš požadavek, tak to už nijak nestornuješ, maximálně ho nemusíš přijímat, ale požadavek se bude dokončovat - odesíláš přece požadavek na server, takže nevím jak bys ho chtěl stornovat / zrušit.
JD
Profil *
požadavek jako takový asi nestornuješ, ale dá se zahodit buffer, do kterého se ukládá příjem ze serveru, jde totiž o to, že ukládám výsledek do jednoho boxu, obsah je takový podle toho, na jaké položce jsi a když změníš položku a přijde obsah té staré ještě před načtením té nové, tak je v tom boxu špatný obsah (on se samozřejmě třeba za vteřinu přehraje správným obsahem, ale může to být matoucí)
joe
Profil
JD
Už chápu tvé úmysly. Pak bych to asi řešil tak, že bych si do nějaké proměnné ukládal aktivní položku (tu na které je kurzor) a před změnou textu v tom boxu bych ověřil, jestli se už nemá načítat něco jiného než přišlo.
Nevím jak na to v jQuery, nepoužívám ho a zdá se mi zbytečný. Ale myslím, že jednoduchou podmínkou toho lze docílit.

EDIT: ale třeba někdo chytřejší poradí líp :-)
JD
Profil *
Jj, uvažoval jsem přesně stejně, problém zase je, že jsem to napsal

$('.prvek').bind(
'mouseenter',
function()
{
activeEl = this;
});

$('.prvek').bind(
'mouseout',
function()
{
activeEl = null;
});

success: function (prvek na kterém jsem) { if(prvek na kterém jsem == activeEl) proveď kód }

jenže, to má taky ty samé mouchy, protože ta fce se zavolá až na úspěch, tzn. v tu dobu "Prvek
na kterém jsem" se nebude rovnat prvku na kterém se zavolalo Ajaxové volání (pokud tedy myší
zajedu na jiný prvek)
Chamurappi
Profil
Reaguji na JD:
Posílej v odpovědi ze strany serveru i vstupní parametry a prověřuj při zpracování té odpovědi v prohlížeči, jestli stále platí podmínky, při nichž byl požadavek vyslán.
JD
Profil *
Děkuju, tohle asi bude nakonec nejlepší i nad tímhle řešením jsem přemýšlel, jen se mi nechtělo vrtat zbytečně v PHP části, když by měl jít Ajax abortnout, ale s tím abortem asi vážně nikdo zkušeností moc nemá a na netu toho moc není, takže mi asi nic jiného nezbyde.

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