Middag,

Probleem met de werking van $.ajax in jqeury.
Volgens mij is het heel eenvoudig, maar krijg er nu beetje hoofdpijn van.

Wie kan mij op weg helpen.

Uitleg: html pagina wordt geladen. Elke div met het attribute id en waarvan de waarde eindigt op _hulp" dient ajax request te verwerken. (div vinden en request afhandelen werkt.)

Probleem1: bij het afhandelen wordt de (in dit geval HTMl) html gedropt in de laatst gevonden div. Hoe kan ik er voor zorgen dat elk request in de juiste div wordt geplaatst? Moet iets doen met het ID van each? of iets heel anders gebruiken dan each?

Probleem 2: hoe neem ik this mee naar de function in 'success'(regel 12).
Bij de url wordt this gebruikt, werkt super, maar hoe krijg ik die this ook in de function. Op deze mannier werkt het niet function(html, this).
Dit probleem is wel op te lossen met globale var maar vind ik niet de bedoeling?

Jquery

function ajaxLoader()
{
  $("div[id$=_hulp]").each(function(id){  
	
	$.ajax({
	 url: $(this).attr("href"),
	 type: 'GET',
	 cache: false,
	 dataType: 'html',
	 success: function(html)
	 {
	   $(this).empty().append(html);			
                 }		
	}); 
	
   });   
}


Alvast bedankt, zou er erg blij mee zijn:D
als je nou eens $(this).load(this.href) probeert?
lijkt me wat minder omslachtig dan jou methode.
Klopt, maar met load heb ik 1 probleem.
Als ik load gebruik, dan werkt javascript niet meer op de pagina die geladen wordt. Heb jij daar oplossing voor?

goed punt, heb ik laatst ook me zitten stoeien, ik heb het opgelost door die code te draaien in de callback, maar als je een hele zooi divjes wil verwerken is dit natuurlijk geen optie.

ik zit hier even te denken of ik iets voor je kan verzinnen...
ik kan er zo snel even niet op komen, misschien iemand anders hier?
ik wil dit zelf ook graag weten.

[edit]
hbe je hier wat aan?
http://groups.google.com/group/jquery-en/browse_thread/thread/8a8f6c139c9b7ade

[edit]
volgens mij filtert load de script tags er helemaal uit... dus wat zou kunnen is het in een div stoppen en daar eval op doen, maar dan ben je misschien snelelr met die functie die je zelf al had, doet die wel js?

ik zal nog eens kijken of ik snap waarom jou ding niet werkt...
Als je bovenstaande code gebruikt $.ajax kan je in de functie in succese de functies aanroepen die je gebruiken voor het op te halen bestand.

Dat werkt super, vandaar die constructie, als het each probleem wordt opgelost ben ik erook :d
ik zou eens wat alerts er in stoppen om te kijken of alle variabelen wel bevatten wat jij denkt dat ze bevatten.
wat er dus gebeurd is dat die this steeds het laatste element is toch?

als ik me niet vergis heeft de function die je bij each opgeeft 2 parameters, de eerste is een counter en de 2de ook het dom element, je zou denken dat dat hetzelfde is als this, maar probeer eens het 2de argument van de functie te gebruiken ipv this.

mocht je toch voor de load willen gaan kan je misschien met http://docs.jquery.com/Ajax/jQuery.getScript de benodigde js ophalen?
Ik vind load ook veel beter werken, top, heb getScript gebruikt.

Oplossing:

 $.getScript("jscript/test.js", function(){
    test(); // functie die in je test.js staat
});

Reageren