Problem mit Verbindung

dann müsste doch folgender Gedanke funktionieren:
ich habe auf meinem Server, also in meiner Domain, ein PHP Script, das sich mit der donnerwetter.de verbindet und auch prüft, ob diese Verbindung klappt. Dann auf meiner Seite einen Aufruf per AJAX auf diese Datei, die im Erfolgsfall die Wetterbox zur Verfügung stellt und anzeigt.

Ich glaub, der Gedanke ist gut.
Du kannst bei fsockopen() angeben, wie lange versucht wird, die Quelle zu holen.
Versuche es halt, wenn es fehlschlägt, gib deine Fehler-Meldung aus.
 
Hallo,

so nun bin ich einen Schritt weiter.
ich habe mich an ein Ajax Tut gehalten und folgendes versucht:

Code:
function loadWetterBox(url) {
		var r = createXMLHttpRequest();
		r.onreadystatechange = function() {
			if (r.readyState == 4) {
				if (r.status == 200) {
					doRequestSpecificThings(r);
				} else {
				alert('Es ist ein Problem aufgetreten.');
				}
			}
		}

		r.open("GET", url);
		r.send(null);
	}


	function createXMLHttpRequest() {
		var http_request = false;
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
			http_request = new XMLHttpRequest();
		}
		else if (window.ActiveXObject) { // IE
			try {
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
		}
		return http_request;
	}


	function doRequestSpecificThings(request) {
		var text = request.responseText;
		document.getElementById("wetter").innerHTML = text;
	}

mittels onLoad() wird die Funktion loadWetterBox() aufgerufen:
Code:
<body bottommargin="0" leftmargin="0" rightmargin="0" topmargin="0" onload="loadwetterBox("wetter.html");">

Ich habe eine HTML-Datei (wetter.html), die den JavaScript aufruf zur Wetterbox beinhaltet:
Code:
<div class="wetter">
	<script type="text/javascript" language="javascript" src="http://www.donnerwetter.de/wetter/net/boxregio.mv?typ=1&plz=2&color_bg=FFFFFF&color_hi=FFFFFF&color_txt=333333&width=192"></script>
	<noscript>JavaScript ist deaktiviert - leider sehen Sie hier kein aktuelles Wetter.</noscript>
</div>

in meiner Seite existiert ein Element mit der id = wetter.
So, soweit ich weiss (aus dem Tut) kann man aber nur Text oder XML-Daten herauslesen und anzeigen, jedoch nicht ein Objekt wie es mir mit dem Link geschickt wird. Trage ich anstelle des Links ein String ein, wird dieser an der entsprechende Stellen angezeigt.

Was kann ich tun, um auch an dieses Objekt zu kommen

Danke
chickenwings
 
Das wird so nicht funktionieren, denn wie bereits erwähnt, darfst du nach dem Laden eines Dokumentes dort keine write()-Anweisungen mehr ausführen...diese stehen aber in dem Skript von donnerwetter.

Eine Möglichkeit sähe ich, wenn du deine wetter.htm in einem iFrame einbindest, das würde auch ohne serverseitige Sprache hinhauen.
 
So, hab mir folgendes ausgedacht:
HTML:
<html>
    <head>
        <script>
            
            // ersetzung für document.write, die in den div wetter schreibt
            function myWrite( str ) {
                document.getElementById( 'wetter' ).innerHTML += str;
            }
            
            // ersetzung für document.writeln
            function myWriteLn( str ) {
                myWriteLn( str + "\n" );
            }
            
            window.onload = function() {
                    // ersetze document.write(ln) gegen die myWrite(ln)-Funktion
                    
                    var oWrite = document.write, oWriteLn = document.writeln;
                    document.write = myWrite;
                    document.writeln = myWriteLn;
                    
                    // erstelle ein script-node und lade die wetter.js
                    var node = document.createElement( "script" );
                    node.src = "wetter.js";
                    
                    // Wenn das Script fertig geladen wurde, stelle die Original-Funktionen wieder her
                    node.onload = function() { 
                            document.write = oWrite;
                            document.writeln = oWriteLn;
                        };
                    
                    // füge das script-node in den head-bereich ein.
                    document.getElementsByTagName( 'head' )[0].appendChild( node );
                };
            
        </script>
    </head>
    <body>
        Das steht vor dem Wetter Script<br>
        <div id='wetter'></div>
        Das steht hinter dem Wetter Script<br>
    </body>
</html>

Allerdings landen alle ausgaben von document.write in dem div, wärend er das Script läd. Funktioniert bei mir super, probier halt mal.
 
Hi,

die Funktion zum Ersetzen von writeln muss jedoch die Funktion myWrite aufrufen, nicht sich selbst.
Code:
// ersetzung für document.writeln
function myWriteLn( str ) {
  myWrite( str + "\n" );
}
Ciao
Quaese
 
Hallo,

@OnlyFoo
habe Dein Versuch mal eingebaut, bei mir passiert allerdings nichts. Was steht denn bei Dir in der wetter.js?

Gruss
chickenwings
 
document.write( "ich bin die wetter.js" );
die musste natürlich zu der verlinken, die du einbinden willst.

Ansonnsten zeig uns doch mal ein hochgeladenes Beispiel.
 
Zuletzt bearbeitet:
Zurück