jquery.nette přepisuje metodu success v $.ajax

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

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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)