Abfrage-Fehler

K

kdc

Hallo,
folgendes Problem:

Ich bin grad dabei ein "Programm" für Pennergame.de zu entwickeln.
Jetz wollte ich es so machen das durch ein Script aktuelle Daten vom jeweiligen Spieler wie zum Beispiel Geld, Narichten usw. geladen werden. Glücklicherweise bekam ich ein Script bereitgestellt.
Dies sah dann so aus:
Code:
//(c) Copyright 2008 Farbflut Entertainment GmbH. All Rights Reserved. 
version = 301;
var http_request = false;
function checkStatus()  {   
	document.getElementById("Pennerbar-msg").setAttribute("label","Lade..");
	var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Components.interfaces.nsIXMLHttpRequest);
	req.open("GET", "http://www.pennergame.de/pennerbar.xml", false);
	req.overrideMimeType("text/xml");
	req.onload = function() { 	
		var status_pb = req.responseXML.getElementsByTagName("status").item(0).attributes.getNamedItem("value").nodeValue;
		if (status_pb == 1) {
			main_url = req.responseXML.getElementsByTagName("site_url").item(0).attributes.getNamedItem("value").nodeValue;	
			var check_update = req.responseXML.getElementsByTagName("barversion").item(0).attributes.getNamedItem("value").nodeValue;
			
			if(check_update>version){
			    open = confirm("Es ist eine neue Version der PennerBar verfügbar! \nPennerBar jetzt updaten?");				
				if (open ==true) goPG('/downloads/pennerbar/')		
			    
			}
			
			
			
			var new_msg = req.responseXML.getElementsByTagName("nachrichten").item(0).attributes.getNamedItem("value").nodeValue;					
			var cash_display = req.responseXML.getElementsByTagName("cash").item(0).attributes.getNamedItem("value").nodeValue;
			var haustier_name = req.responseXML.getElementsByTagName("haustiername").item(0).attributes.getNamedItem("value").nodeValue;
			var promille_display = req.responseXML.getElementsByTagName("promille").item(0).attributes.getNamedItem("value").nodeValue;
			timer_bildung = req.responseXML.getElementsByTagName("timer").item(0).attributes.getNamedItem("value").nodeValue;
			timer_kampf = req.responseXML.getElementsByTagName("kampftimer").item(0).attributes.getNamedItem("value").nodeValue;
			var highscore_platz = req.responseXML.getElementsByTagName("highscore").item(0).attributes.getNamedItem("value").nodeValue;
			var uid = req.responseXML.getElementsByTagName("uid").item(0).attributes.getNamedItem("value").nodeValue;
			var flaschenkurs = req.responseXML.getElementsByTagName("flaschenpreis").item(0).attributes.getNamedItem("value").nodeValue;
			
			if(promille_display < 100) var img_promille = "bier_leer.png";
			else if(promille_display < 250)	var img_promille = "bier_halb.png";
			else if(promille_display < 400) var img_promille = "bier.png";
			else var img_promille = "krankenwagen.gif";

			var end = "";
			if (new_msg > 1) end = "en"; //Mehrzahl
			if(new_msg>0){
				document.getElementById("Pennerbar-msg").disabled = false; 
				new_msg_display = (new_msg+" neue Nachricht"+end);

				if (Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch).getBoolPref('pennerbar.alert-pm') == true) {
					open = confirm("Du hast "+ new_msg +" neue Nachricht"+end+"! \nWillst du die Nachricht sofort lesen?");				
					if (open ==true) goPG('/messages/')		
					}else{}			
			}else{
				new_msg_display = "-leer-";
				document.getElementById("Pennerbar-msg").disabled = true; 
			} 
			document.getElementById("Pennerbar-msg").setAttribute("label",new_msg_display); 
			document.getElementById("Pennerbar-msg").setAttribute("oncommand","goPG('/messages/')"); 
			document.getElementById("Pennerbar-Haustier").setAttribute("label",haustier_name); 
			document.getElementById("Pennerbar-cash").setAttribute("label", "€"+(cash_display/100)); 
			document.getElementById("Pennerbar-promille").setAttribute("label", (promille_display/100)+"‰"); 
			document.getElementById("Pennerbar-promille").setAttribute("image", "chrome://pennerbar/skin/"+img_promille);
			document.getElementById("Pennerbar-highscore").setAttribute("label", highscore_platz); 
			document.getElementById("Pennerbar-kurs").setAttribute("label", flaschenkurs+" Cent"); 
			
			document.getElementById("profil_link").setAttribute("oncommand", "goPG('/profil/id:"+uid+"/')");
			
			timesync(timer_bildung,"Pennerbar-timer");
			timesync(timer_kampf,"Pennerbar-kampftimer");   			
		}else{
			document.getElementById("Pennerbar-msg").setAttribute("label","Bitte neu einloggen"); //nicht eingeloggt	
		}		
	}	//end func
	req.onerror = document.getElementById("Pennerbar-msg").setAttribute("label","Lade...");
	req.send(null);
}

function goURL(url){
	if(url=="vote_gn"){
		window._content.document.location = "http://www.galaxy-news.de/charts/?op=vote&game_id=2133";		
	}else{
		window._content.document.location = url;
	}
	window.content.focus();
}
function goPG(seite){
		window._content.document.location = main_url + seite;
		window.content.focus();
}



function time_anzeige(timestamp, anzeige){
	var display = formate_time_rel(timestamp);
	document.getElementById(anzeige).setAttribute("label", display);  
	if (anzeige == "Pennerbar-kampftimer") timer_kampf = timer_kampf - 1;
	else timer_bildung = timer_bildung - 1 ;
	if (timestamp==1 && (Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch).getBoolPref('pennerbar.alert') == true)) {
		if (anzeige == "Pennerbar-kampftimer") {
			alert("Ein Kampf ist zu Ende gegangen!");}
		else  alert("Eine Weiterbildung ist gerade zu Ende gegangen!");
	}
}

function formate_time_rel(time){
	if(time<0) 	return "-";	
	else{
		var sekunde = Math.floor(time%60);
		if(time < 60){
			if(time < 10) return "00:0" + sekunde;
			else	return "00:" + sekunde;				
		}
		else if(sekunde<10)	sekunde="0"+sekunde;	
   
		var minute = (Math.floor(time/60)%60);
		if(time < 3600)	return minute + ":" + sekunde;
		if(minute<10) minute="0"+minute;	
   
		var stunde = (Math.floor(time/3600)%24);
		if(time < 86400)return (stunde + ":" + minute + ":" + sekunde);
		if(stunde<10) stunde="0"+stunde;			
   
		var tage = Math.floor(time/(3600*24));
		if(tage>1)	return (tage + " Tage " + stunde + ":" + minute + ":" + sekunde); 
		else return (tage + " Tag " + stunde + ":" + minute + ":" + sekunde); 
	}
}

function akt_kurs() {
	if (http_request.readyState == 4 && parseInt(http_request.responseText) && http_request.responseText > 0) {
		var neuer_kurs = parseInt(http_request.responseText);
		document.getElementById("Pennerbar-kurs").setAttribute("label", (neuer_kurs+"ct.")); 
	}
}

function sync(){
	if(Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch).getBoolPref('pennerbar.autoreload') == true){ 
		checkStatus();
	}else{
		return null;}
}

function kurs(){
	if(Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch).getBoolPref('pennerbar.kurs') == true){ 
		//Wenn akt. Flaschenkurs anzeigen
		http_request = false;
		if (window.XMLHttpRequest) { 
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) {
				http_request.overrideMimeType('text/xml');
			}
			if (!http_request) {
				alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
				return false;
			}
			http_request.onreadystatechange = akt_kurs;
			http_request.open('get', 'http://pennergame.de/functions/pfandflaschenkurs.php');
			http_request.send(null); 
		}
	}else{
		document.getElementById("Pennerbar-kurs").setAttribute("label", "");
		return null;
	}
}
setInterval("time_anzeige(timer_bildung,'Pennerbar-timer');time_anzeige(timer_kampf,'Pennerbar-kampftimer');",1000);
setInterval("sync()",60000); //5 min reload
//setInterval("kurs()",120000); //2 min aktueller kurs

Das Script ruft die aktuellen Spielerdaten per xml auf. Weil da jetzt:
Code:
var new_msg = req.responseXML.getElementsByTagName("nachrichten").item(0).attributes.getNamedItem("value").nodeValue;					
			var cash_display = req.responseXML.getElementsByTagName("cash").item(0).attributes.getNamedItem("value").nodeValue;
			var haustier_name = req.responseXML.getElementsByTagName("haustiername").item(0).attributes.getNamedItem("value").nodeValue;......
stand wollte ich folgendes in die .html datei shreiben:
Code:
<script type="text/javascript" src="pennerbar.js"></script>
Dein Guthaben:<div id="cash"></div>
........

Aber leider funktionierte das nicht. Mir wurde nur "Dein Guthaben:" angezeigt. Man sollte da dann eigentlich sehen wie viel geld man momentan hat.
Was habe ich falsch gemacht
 
Hi,

der Ausschnitt, auf den Du Dich beziehst, zieht doch nur die Daten aus dem XML des Ajax-Response und einem getElementsByTagName() sind die IDs der Elemente sowieso egal...

Das Befüllen Deiner HTML-Elemente geschieht hier:

Code:
document.getElementById("Pennerbar-msg").setAttribute("label",new_msg_display); 
document.getElementById("Pennerbar-msg").setAttribute("oncommand","goPG('/messages/')"); 
document.getElementById("Pennerbar-Haustier").setAttribute("label",haustier_name);
...

Ein Blick in die Fehlerkonsole hätte da eigentlich aufschlussreich sein müssen.

LG
 
also müsste da jetzt in der .html datei stehen:
Code:
Dein Haustier heißt <div id="Pennerbar-Haustier"></div>.
 
ich weiß nicht was falsch ist aber es funktioniert einfach nicht.
Hier ist der Code mit dem ich grad Probleme habe:
Code:
  <script language="javascript "type="text/javascript">
//(c) Copyright 2008 Farbflut Entertainment GmbH. All Rights Reserved. 
version = 301;
var http_request = false;
function checkStatus()  {   
	document.getElementById("Pennerbar-msg").setAttribute("label","Lade..");
	var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Components.interfaces.nsIXMLHttpRequest);
	req.open("GET", "http://www.pennergame.de/pennerbar.xml", false);
	req.overrideMimeType("text/xml");
	req.onload = function() { 	
		var status_pb = req.responseXML.getElementsByTagName("status").item(0).attributes.getNamedItem("value").nodeValue;
		if (status_pb == 1) {
			main_url = req.responseXML.getElementsByTagName("site_url").item(0).attributes.getNamedItem("value").nodeValue;	
			var check_update = req.responseXML.getElementsByTagName("barversion").item(0).attributes.getNamedItem("value").nodeValue;
			
			if(check_update>version){
			    open = confirm("Es ist eine neue Version der PennerBar verfügbar! \nPennerBar jetzt updaten?");				
				if (open ==true) goPG('/downloads/pennerbar/')		
			    
			}
			
			
			
			var new_msg = req.responseXML.getElementsByTagName("nachrichten").item(0).attributes.getNamedItem("value").nodeValue;					
			var cash_display = req.responseXML.getElementsByTagName("cash").item(0).attributes.getNamedItem("value").nodeValue;
			var haustier_name = req.responseXML.getElementsByTagName("haustiername").item(0).attributes.getNamedItem("value").nodeValue;
			var promille_display = req.responseXML.getElementsByTagName("promille").item(0).attributes.getNamedItem("value").nodeValue;
			timer_bildung = req.responseXML.getElementsByTagName("timer").item(0).attributes.getNamedItem("value").nodeValue;
			timer_kampf = req.responseXML.getElementsByTagName("kampftimer").item(0).attributes.getNamedItem("value").nodeValue;
			var highscore_platz = req.responseXML.getElementsByTagName("highscore").item(0).attributes.getNamedItem("value").nodeValue;
			var uid = req.responseXML.getElementsByTagName("uid").item(0).attributes.getNamedItem("value").nodeValue;
			var flaschenkurs = req.responseXML.getElementsByTagName("flaschenpreis").item(0).attributes.getNamedItem("value").nodeValue;
			
			if(promille_display < 100) var img_promille = "bier_leer.png";
			else if(promille_display < 250)	var img_promille = "bier_halb.png";
			else if(promille_display < 400) var img_promille = "bier.png";
			else var img_promille = "krankenwagen.gif";

			var end = "";
			if (new_msg > 1) end = "en"; //Mehrzahl
			if(new_msg>0){
				document.getElementById("Pennerbar-msg").disabled = false; 
				new_msg_display = (new_msg+" neue Nachricht"+end);

				if (Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch).getBoolPref('pennerbar.alert-pm') == true) {
					open = confirm("Du hast "+ new_msg +" neue Nachricht"+end+"! \nWillst du die Nachricht sofort lesen?");				
					if (open ==true) goPG('/messages/')		
					}else{}			
			}else{
				new_msg_display = "-leer-";
				document.getElementById("Pennerbar-msg").disabled = true; 
			} 
			document.getElementById("Pennerbar-msg").setAttribute("label",new_msg_display); 
			document.getElementById("Pennerbar-msg").setAttribute("oncommand","goPG('/messages/')"); 
			document.getElementById("Pennerbar-Haustier").setAttribute("label",haustier_name); 
			document.getElementById("Pennerbar-cash").setAttribute("label", "€"+(cash_display/100)); 
			document.getElementById("Pennerbar-promille").setAttribute("label", (promille_display/100)+"‰"); 
			document.getElementById("Pennerbar-promille").setAttribute("image", "chrome://pennerbar/skin/"+img_promille);
			document.getElementById("Pennerbar-highscore").setAttribute("label", highscore_platz); 
			document.getElementById("Pennerbar-kurs").setAttribute("label", flaschenkurs+" Cent"); 
			
			document.getElementById("profil_link").setAttribute("oncommand", "goPG('/profil/id:"+uid+"/')");
			
			timesync(timer_bildung,"Pennerbar-timer");
			timesync(timer_kampf,"Pennerbar-kampftimer");   			
		}else{
			document.getElementById("Pennerbar-msg").setAttribute("label","Bitte neu einloggen"); //nicht eingeloggt	
		}		
	}	//end func
	req.onerror = document.getElementById("Pennerbar-msg").setAttribute("label","Lade...");
	req.send(null);
}

function goURL(url){
	if(url=="vote_gn"){
		window._content.document.location = "http://www.galaxy-news.de/charts/?op=vote&game_id=2133";		
	}else{
		window._content.document.location = url;
	}
	window.content.focus();
}
function goPG(seite){
		window._content.document.location = main_url + seite;
		window.content.focus();
}



function time_anzeige(timestamp, anzeige){
	var display = formate_time_rel(timestamp);
	document.getElementById(anzeige).setAttribute("label", display);  
	if (anzeige == "Pennerbar-kampftimer") timer_kampf = timer_kampf - 1;
	else timer_bildung = timer_bildung - 1 ;
	if (timestamp==1 && (Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch).getBoolPref('pennerbar.alert') == true)) {
		if (anzeige == "Pennerbar-kampftimer") {
			alert("Ein Kampf ist zu Ende gegangen!");}
		else  alert("Eine Weiterbildung ist gerade zu Ende gegangen!");
	}
}

function formate_time_rel(time){
	if(time<0) 	return "-";	
	else{
		var sekunde = Math.floor(time%60);
		if(time < 60){
			if(time < 10) return "00:0" + sekunde;
			else	return "00:" + sekunde;				
		}
		else if(sekunde<10)	sekunde="0"+sekunde;	
   
		var minute = (Math.floor(time/60)%60);
		if(time < 3600)	return minute + ":" + sekunde;
		if(minute<10) minute="0"+minute;	
   
		var stunde = (Math.floor(time/3600)%24);
		if(time < 86400)return (stunde + ":" + minute + ":" + sekunde);
		if(stunde<10) stunde="0"+stunde;			
   
		var tage = Math.floor(time/(3600*24));
		if(tage>1)	return (tage + " Tage " + stunde + ":" + minute + ":" + sekunde); 
		else return (tage + " Tag " + stunde + ":" + minute + ":" + sekunde); 
	}
}

function akt_kurs() {
	if (http_request.readyState == 4 && parseInt(http_request.responseText) && http_request.responseText > 0) {
		var neuer_kurs = parseInt(http_request.responseText);
		document.getElementById("Pennerbar-kurs").setAttribute("label", (neuer_kurs+"ct.")); 
	}
}

function sync(){
	if(Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch).getBoolPref('pennerbar.autoreload') == true){ 
		checkStatus();
	}else{
		return null;}
}

function kurs(){
	if(Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch).getBoolPref('pennerbar.kurs') == true){ 
		//Wenn akt. Flaschenkurs anzeigen
		http_request = false;
		if (window.XMLHttpRequest) { 
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) {
				http_request.overrideMimeType('text/xml');
			}
			if (!http_request) {
				alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
				return false;
			}
			http_request.onreadystatechange = akt_kurs;
			http_request.open('get', 'http://pennergame.de/functions/pfandflaschenkurs.php');
			http_request.send(null); 
		}
	}else{
		document.getElementById("Pennerbar-kurs").setAttribute("label", "");
		return null;
	}
}
setInterval("time_anzeige(timer_bildung,'Pennerbar-timer');time_anzeige(timer_kampf,'Pennerbar-kampftimer');",1000);
setInterval("sync()",60000); //5 min reload
//setInterval("kurs()",120000); //2 min aktueller kurs
</script>
Haustier<div id="Pennerbar-Haustier"></div>
 
Hi,

schau mal in die FF-Fehlerkonsole.
Und vervollständige dann erstmal das Dokument. Selbst, wenn der Request abgesetzt würde, könnte das nicht funktionieren. Du hast ja die Elemente immer noch nicht definiert.

LG
 

Neue Beiträge

Zurück