jquery.nette přepisuje metodu success v $.ajax
- JakubKohout
- Člen | 92
Zdravím,
používam jquery.autocomplete a nette.jquery mi přepisuje neustále metody
success a start a nevím jak to obejít :/
V danym skriptu se zobrazí jenom alert s hláškou konec. A přitom ajax se normálně vykoná a přijdou zpátky data.
$.ajax({
// try to leverage ajaxQueue plugin to abort previous requests
mode: "abort",
// limit abortion to this input
port: "autocomplete" + input.name,
dataType: options.dataType,
url: options.url,
data: $.extend({
q: lastWord(term),
limit: options.max
}, extraParams),
start: function(){
alert('start');
},
success: function(data) {
alert('bla');
var parsed = options.parse && options.parse(data) || parse(data);
cache.add(term, parsed);
success(term, parsed);
},
complete: function(){
alert('konec');
}
});
- Honza Marek
- Člen | 1664
dRaGen napsal(a):
Zdravím,
používam jquery.autocomplete a nette.jquery mi přepisuje neustále metody success a start a nevím jak to obejít :/
To je nějaká blbost. Nette.jquery nastavuje akorát defaultní success, který je možno kdykoliv přepsat. Taky nastavuje výchozí návratový typ na JSON, ale pokud dobře chápu tvůj kód, tak to taky měníš, čili v tom by problém být neměl.
- JakubKohout
- Člen | 92
no problém je v jquery.nette.js konkrétně tedy v tomto
jQuery.ajaxSetup({
success: jQuery.nette.success,
dataType: "json"
});
Zkoušel sem přeházet pořadí includovanejch javascriptů a nepomohlo …
jinak ten plugin je toto: http://bassistance.de/…utocomplete/
- Panda
- Člen | 569
dRaGen napsal(a):
no problém je v jquery.nette.js konkrétně tedy v tomto
jQuery.ajaxSetup({ success: jQuery.nette.success, dataType: "json" });
Zkoušel sem přeházet pořadí includovanejch javascriptů a nepomohlo …
jinak ten plugin je toto: http://bassistance.de/…utocomplete/
V jakém formátu se Ti posílají data pro ten autocomplete? Nemůže být
problém s tím výchozím dataType: "json"
? Výchozí callback by
skutečně vadit neměl.
- JakubKohout
- Člen | 92
ty data jsou v korektním stavu (nick \n nick). V tomhle bych problém
neviděl.
Povšiměte si v tom prvnim postu co jsem napsal těch alertu, jedinej kterej
se zobrazi je ten posledni…
- Panda
- Člen | 569
dRaGen napsal(a):
ty data jsou v korektním stavu (nick \n nick). V tomhle bych problém neviděl.
Povšiměte si v tom prvnim postu co jsem napsal těch alertu, jedinej kterej se zobrazi je ten posledni…
Hm, podle mě je přesně v tom ten problém. Začnu u popisu callbacku
success
z jQuery dokumentace:
A function to be called if the request succeeds. The function gets passed two arguments: The data returned from the server, formatted according to the ‚dataType‘ parameter, and a string describing the status. This is an Ajax Event.
Z toho jsem pochopil, že před voláním callbacku musí proběhnout
parsování výstupu. Parsování výstupu se bere podle parametru
dataType
, ten se použije podle výchozího nastavení, tzn. JSON.
A teď tomu chudákovi cpeš plaintext. A co se stane, když plaintext
parsuješ jako JSON? Parsování selže, tudíž se
nemůže zavolat metoda success
(úspěch). Metoda
complete
se naproti tomu volá vždy, ale skutečný výsledek
musíš získat například z jejích argumentů.
//Doplnění: Ještě bych doplnil, že to skutečně bylo tím.
Editoval Panda (27. 10. 2009 14:48)