jQuery und Ajax Call Problem

  • Themenstarter Themenstarter jQuery Anfänger
  • Beginndatum Beginndatum
J

jQuery Anfänger

Hallo liebe Community,

Ich habe ein kleines Problem mit jQuery und Ajax - ich habe eine funktion die mir alle 10 sekunden eine Seite per Ajax abfragen soll ob es was neues gibt - so wiet so gut, scheint einfach zu sein - aber meine Updatefunktion wirft ständig einen fehler--- sie wird 1x ausgeführt und beim update kommt dann ein JS fehler der mir sagt es wird ein Objekt erwartet.... hier mein code:

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                            <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-de" lang="de-de" >
<head>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.custom.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/redmond/jquery-ui-1.8.custom.css" />
<script type="text/javascript">
	$(function() {
        
        update();
                
  function update() {   
        $.ajax({
            url: "TEST.php",
            cache: false,
            success: function(html){
            $("#results").append(html);
        }});
        setTimeout('update()', 10000); 
  }

	});
    
    
</script>
</head>
<body>
<div id="results"></div>
</body>
</html>

jemand nen tip was ich falsch mache? - weil vom Code her sehe ich keinen fehler und eigentlich ist es zu rudimentär als das ich da was falsch gemacht habe...!
 
Hi,

die Funktion update läuft im Gülitgkeitsbereich von $(function(){/*...*/});, die Methode setTimeout jedoch im Gültigkeitsbereich von window. Dort gibt es jedoch keine Funktion namens update, deshalb die Fehlermeldung, das das Objekt nicht existiert.

Lösung - notiere die Funktion ausserhalb von $(function(){/*...*/});.
Code:
function update() {   
  $.ajax({
    url: "TEST.php",
    cache: false,
    success: function(html){
    $("#results").append(html);
  }});
  setTimeout('update()', 10000);
}

$(function() {     
  update();
});

Du kannst die Funktion natürlich auch als Metghode verfügbar machen.
Code:
$(function() {
  var _this = this;

  update();

  this.update = function(){
    $.ajax({
      url: "xmlhttp_request_dummy.php",
      cache: false,
      success: function(html){
      $("#results").append(html);
    }});
    setTimeout(function(){_this.update();}, 10000);
  }

});

Ciao
Quaese
 
Hallo Community,

habe ein problem mit dem ie
Firefox und Opera können mir in meinem xml String die tags finde.

z.B.:

$(phpData).find('data').each(function(){
...
})

Das Problem ist der Internet Explorer kann das irgend wie nicht. Weiß jemand warum?
 
Moin,

es hat den Anschein, dass der IE darauf besteht, dass der Content-Type der angefragten Ressource "text/xml" ist.
Stelle also serverseitig sicher, dass dies der Fall ist.
Andernfalls wird das Ergebnis kein XML-Dokument sein, sondern nur ein String mit der Source der angefragten Ressource, worauf each() keine Ergebnisse liefert.
 

Neue Beiträge

Zurück