# jQuery nach Ajax- Event starten



## Sprint (10. Juli 2010)

Hallo zusammen,

ich habe hier ein Problem, für das ich eigentlich noch viel zu unreif bin. Bei einem neuen Projekt sollen die Inhalte der verschiedenen Seiten per Ajax in einen Container nachgeladen werden. Das an sich funktioniert. Nun soll in einer dieser Seiten diese jquery Slideshow verwendet werden. Nun verhält sich das Script nach dem Laden so, als ob Javascript abgeschaltet wäre. 
Inzwischen habe ich rausgefunden, daß das Problem daher rührt, daß das Script durch ready()nach dem Laden der index.html sofort gestartet wird und später, wenn die eigentliche Slideshow nachgeladen wird, nicht mehr. 
Gibt es eine einfache Lösung, das Script nach dem Laden der Slideshow zu starten, oder geht das Nachladen von jquery Script gar nicht?

Danke schonmal im Voraus,
Sprint


----------



## Sven Mintel (10. Juli 2010)

Moin,



Sprint hat gesagt.:


> Gibt es eine einfache Lösung, das Script nach dem Laden der Slideshow zu starten



Jo, das geht eigentlich recht simpel 

Du hast momentan Folgendes:
	
	
	



```
$(document).ready(function(){
/**
  *das ganze Skript
  **/
});
```

Ändere es so ab:

```
var slideshowFunktion=function(){
/**
  *das ganze Skript
  **/
};
```

Und du hast etwas, was du als Callback des Events aufrufen kannst, nämlich *slideshowFunktion*


----------



## Sprint (10. Juli 2010)

Ok, soweit ist mir das klar. Aber scheinbar hab ich noch ein Verständnisproblem mit der Platzierung der einzelnen Teile. Bis jetzt ist die jquery Einbindung und auch das Slideshow Script in der index.html platziert. Dann sollte doch der Aufruf von slideshowFunktion() in dem nachgeladenen Teil passieren. Nur wird er da nicht abgearbeitet. 
Oder bin ich da völlig auf dem Holzweg?


----------



## Sven Mintel (10. Juli 2010)

Nö, der Aufruf der Funktion muss als Callback des Ajax-Requests erfolgen.
Callback ist eine Funktion, die du festlegen kannst, die nach Abschluss des Request ausgeführt wird.

Ich weiss jetzt nicht, welche AJAX-Methode du genau verwendest....schau in der jquery-Doku mal bei der benutzen Methode nach, die findest dort auch Infos zum Callback


----------



## Sprint (10. Juli 2010)

Das Nachladen wird nicht über jquery durchgeführt, sondern über dieses einfache Script.

```
<script type="text/javascript">
var ajaxdestination="";
function getdata(what,where) {
	try {
		xmlhttp = window.XMLHttpRequest?new XMLHttpRequest():
		new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch (e) { }

	document.getElementById(where).innerHTML ="<center><img src='images/loading.gif'></center>";
	ajaxdestination=where;
	xmlhttp.onreadystatechange = triggered;
	xmlhttp.open("GET", what);
	xmlhttp.send(null);
		return false;
}

function triggered() {
	if (xmlhttp.readyState == 4){
		if (xmlhttp.status == 200) 
			document.getElementById(ajaxdestination).innerHTML =xmlhttp.responseText;
	}
}
</script>
```
Oder ist es besser, das auch über jquery zu machen?


----------



## Sven Mintel (11. Juli 2010)

Sprint hat gesagt.:


> Oder ist es besser, das auch über jquery zu machen?



Naja, wenn es eh geladen wird, wäre das nicht das Schlechteste.
Es ginge aber auch mit dem, was du hast.
Folgende Anweisung:

```
slideshowFunktion()
```
direkt im Anschluss an jenes notiert:
	
	
	



```
document.getElementById(ajaxdestination).innerHTML =xmlhttp.responseText;
```
...sollte da ausreichen.


----------



## Sprint (11. Juli 2010)

Guten Morgen,

das hat ausgereicht. Ich hatte das gestern Abend nach deinem letzten Post auch schon mal so probiert, aber ich hatte vorher bei der Änderung des Scriptes übersehen, daß durch den Wegfall vom ready() auch am Ende eine Klammer weg muß. Das hab ich aber erst heute morgen gesehen.
Für's erste lasse ich das jetzt mal so, werde aber bei Gelegenheit mal versuchen, das alles per jquery zu machen.

Danke für die Hilfe.


----------

