kostenloser Webspace werbefrei: lima-city


Asyncrones AJAX --> Firefox crash

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    manu311

    manu311 hat kostenlosen Webspace.

    Hi,

    ich hab mir mal eine AJAX-Klasse geschrieben. Da ich bisher hauptsächlich mit Syncronem AJAX beschäftigt war, funktioniert das damit tadelos. Das Asyncrone leider nicht überall.
    Mein Firefox macht keine Probleme, egal ob mit oder ohne Plugins. Die Feuerfüchse anderer Leute stürzen aber seltsamerweise ab wenn ich einen Asyncronen Transfer damit durchführen will.
    Die Funktion die die AJAX-Klasse aufruft, ist nicht schuld, ich hab sämtlichen Inhalt entfernt, es wird lediglich eine Seite (die nicht läd) aufgerufen und das GoOn wird mit einer leeren Funktion überschrieben.
    Wenn mir vielleicht jemand helfen könnte :) und mir sagen wo mein Fehler liegt :).
    In Internet Explorer und in Opera funktioniert es tadelos. Und in meinem Firefox natürlich ;).

    Hier der Code der Ajax-Klasse:

    var AJAX_CLASS = function(tp, url, async, dat)
    	{
    	this.tp = tp.toUpperCase() || \"GET\"; //Transport Protokoll (GET, POST etc)
    	this.url = url;
    	if (async == true || async == \'true\' || async == \"true\" || async*1 == 1){async = true;}
    	this.async = async || false;
    	this.dat = dat || null;
    
    	var _this = this;
    
    	this.xmlhttp = null
    	//Gecko:
    	if (window.XMLHttpRequest){
    		this.xmlhttp = new XMLHttpRequest()
    		}
    	//Microschrott:
    	else if(window.ActiveXObject) {
    		this.xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\")
    		}
    
    	this.xmlhttp.open(this.tp, this.url, this.async);
    	this.xmlhttp.setRequestHeader(\'If-Modified-Since\', \'Sat, 1 Jan 2000 00:00:00 GMT\');
    	this.xmlhttp.setRequestHeader(\"Pragma\", \"no-cache\");
    	this.xmlhttp.setRequestHeader(\"Cache-Control\", \"must-revalidate\");
    	this.xmlhttp.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded; charset=UTF-8\");
    
    	this.send = function()
    		{
    		if (this.async){
    		this.xmlhttp.onreadystatechange = function() {_this.GoOn();}
    		}
    		this.xmlhttp.send(this.dat);
    		if (!this.async){
    		this.GoOn();
    		}
    
    		}
    
    	this.GoOn = function()
    		{
    		if (this.xmlhttp.readyState == 4) {
    		eval(this.xmlhttp.responseText);
    		}
    		}
    	
    	}
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Autor dieses Themas

    manu311

    manu311 hat kostenlosen Webspace.

    Ich hab jetzt eine vermeintliche Fehlerquelle lokalisiert gehabt, aber funktioniert hat\\\'s trotzdem nicht alzu lange.

    Der Fehler:

    In PHP verlängere ich die aufrufszeit der Seite und setzte das Limit bei jedem Durchlauf der schleife auf 30 Sekunden.
    Schalte ich diese Funktion aus (also kommentieren ich sie ;)), funktioniert es in Firefox auch (dachte ich). Ist aber wiederrum für den Server nicht ganz so sparsam wie eine dauerhaft offengehaltene Verbindung.
    Notfalls geht\\\\\\\\\\\\\\\'s natürlich auch so. Wenn mir trotzdem jemand sagen könnte wie ich das Umgehen kann und die Seite trotzdem endlos laden lassen kann, wäre ich dem sehr dankbar :).

    Hier der PHP-Code (dick die Zeile die Probleme macht):
    $ausgabe = \\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\';
    while($ausgabe == \\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\') {
    $antwort = newaction();
    if ($antwort != \\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\') {$ausgabe .= $antwort;}
    if ($ausgabe == \\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\') {sleep(1);}
    [b]set_time_limit(30);[/b]
    }
    
    echo $ausgabe;


    //EDIT:
    Nu bekomm ich schon wieder Meldungen das es nicht mehr geht -.-.
    Ich weiß nicht was ich noch machn soll. HHHIIILLFFFFEEEE

    //EDIT2:
    Ok hab das Problem jetzt gefunden, es hat sich irgendwie damit verkeilt das mehrere anfragen gleichzeitig von meiner Seite ausgingen. Allerdings ging das auch nicht wenn ich unterschiedliche Codes zur Abfrage benutzt habe .... Hab jetzt per setTimeout das ganze n paar ms nach hinten verschoben. Sonderlich sauber ist\'s aber auch nicht.
    Falls mir da jemand eine Alternative zu sagen kann, darf er gerne tun.

    Beitrag geändert: 28.9.2007 15:22:30 von manu311
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!