JSON Auswahlliste selectieren

BlackPerfect

Grünschnabel
Hi Leute,

ich habe mit über JSON ne Auswahlliste erstellt(die einzelnen Optionen hole ich über ne txt). Wenn man aus der Auswahlliste was bestimmtes auswählt, soll eine Meldung kommen. Leider funktioniert mein Ansatz nicht, wäre schön wenn ihr mir sagen würdet was ich falsch mache bzw. sagen wie es richtig gemacht werden muss. Also der gibt das alert nicht aus!

Mein Code:

Code:
<html>

<head>
<meta http-equiv="Pragma" content="no-cache"> 
<meta http-equiv="Cache-Control" content="no-cache"> 
<meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT">
<title></title>
<script type="text/javascript">

var request = false;

	// ReqgetRequest();uest senden
	function setRequest() {
		// Request erzeugen
		if (window.XMLHttpRequest) {
			request = new XMLHttpRequest(); // Mozilla, Safari, Opera
		} else if (window.ActiveXObject) {
			try {
				request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
			} catch (e) {
				try {
					request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
				} catch (e) {}
			}
		}                                 

		
		if (!request) {
			alert("Kann keine XMLHTTP-Instanz erzeugen");
			return false;
		} else 
        {
		        
                request.open('get','json.txt',true);
                request.onreadystatechange = handleRequest;
                request.send(null)
        }
  }
    function handleRequest()
    {
        if(request.readyState == 4)
        {
            var daten       = request.responseText;
            daten           = eval("(" + daten + ")");
             
            for(i=0;i< daten.length;i++)
            {
                
                if(typeof daten[i].spiel_name !="undefined")
                {          
           
                    //Auswahlliste für Game
                    var option_field_game = document.createElement("option");
                    var option_field_text_game = document.createTextNode(daten[i].spiel_name); 
                    document.getElementById("Antwort_game").appendChild(option_field_game);
                    option_field_game.appendChild(option_field_text_game);
                    if( daten[i].spiel_name.selected =="Counter Strike 1.6")
                    {
                          alert("Testausgabe");        
                    }
                
                    //document.getElementById("form_game").style.display="none";
                    
                     }        
            //Auswahlliste für Server_Config
            
                if(typeof daten[i].server_config !="undefined")
                {             
                    var option_field_server = document.createElement("option");
                    var option_field_text_server = document.createTextNode(daten[i].server_config); 
                    document.getElementById("Antwort_server").appendChild(option_field_server);
                    option_field_server.appendChild(option_field_text_server);             
                }
            
                if(typeof daten[i].cs_tickrate !="undefined")
                {             
                    var option_field_tickrate = document.createElement("option");
                    var option_field_text_tickrate = document.createTextNode(daten[i].cs_tickrate); 
                    document.getElementById("Antwort_tickrate").appendChild(option_field_tickrate);
                    option_field_tickrate.appendChild(option_field_text_tickrate);             
                }
            
            if(typeof daten[i].slot_config !="undefined")
                {             
                    var option_field_slot = document.createElement("option");
                    var option_field_text_slot = document.createTextNode(daten[i].slot_config); 
                    document.getElementById("Antwort_slot").appendChild(option_field_slot);
                    option_field_slot.appendChild(option_field_text_slot);             
                }           
                    
                    
                    
            }
        } 
    }

setRequest();    		
</script>
</head>

<body>
<form id="form_game" >
<select id="Antwort_game"></select>
</form>


<form name="form_server">
<select id="Antwort_server"></select>
</form>


<form name="form_tickrate">
<select id="Antwort_tickrate"></select>
</form>

<form name="form_slot">
<select id="Antwort_slot"></select>
</form>
</body>
</html>
 
Zuletzt bearbeitet:
Hi,

also ehrlich gesagt verstehe ich Deinen Ansatz auch nicht so richtig. Warum schon Ajax beim ersten Laden des Dokumentes? Das kann man doch besser auf dem Server fertig zusammenschustern und ausliefern. Den Aufruf von setRequest im Headbereich finde ich außerdem unsauber, das gehört eigentlich als onload ins Body-Tag, wenn's denn schon so sein soll. Dein Alert kann nicht funktionieren. Das, was Du da machst, ist abzufragen, ob in Deiner json.txt der Eintrag selected ist. Eine txt-Datei auf dem Server weiss aber nicht mal, dass Du eine Maus hast. Du musst den Auswahllisten ein onchange verpassen, in dem eine Funktion Deiner Wahl aufgerufen wird.

LG
 
Also das ganze mache ich auf ajax basis weil später will, das eine auswahlliste unsichtbar wird, wie du das auch schon siehst bei dem auskommentierten.
Und das wiederum mache ich weil das ganze ein Teil von einen Bestellscript ist, also wenn man das Counter Strike 1.6 aufruft soll eine Auswahlliste weg fallen die man nicht für CS braucht bzw. diese Option nicht auf das Spiel zutrifft! und was willst du da an php schicken
Und ja an sich geht der Script, also es wird alles korrekt aus der txt genommen und auch die <option> Felder werden korrekt erzeugt.
Aber wenn diesen Ansatz nicht gelungen ist wie würdest du es dann machen genau?
 
Hi,

Du kannst das ja schon so machen. Ich würde nur das setRequest onload aufrufen.
Aber das Alert ist trotzdem Quatsch an der Stelle. Du musst den Auswahllisten onchange-Attribute geben und dort Funktionen eintragen, die machen, was auch immer Du haben willst.

LG

Nachtrag:

Und das wiederum mache ich weil das ganze ein Teil von einen Bestellscript ist, also wenn man das Counter Strike 1.6 aufruft soll eine Auswahlliste weg fallen die man nicht für CS braucht bzw. diese Option nicht auf das Spiel zutrifft! und was willst du da an php schicken

Die ausgewählte Option z.B.
Abhängig von der kannst Du dann mit einem serverseitigen Script entscheiden, was dann ausgegeben wird.
Was Du jetzt machst, ist eine statische Textdatei vom Server abzurufen, in der immer ein und dasselbe steht.
 
Zuletzt bearbeitet:
Hi,

danke für deine Hilfe und hab es schon mal hinbhekommen das es vom unsichtbaren sichtbar gemacht habe aber leider noch nicht umgekehrt wie ich es eigentlich will.
Bis jetzt habe ich es folgendermaßen versucht:

Code:
<script type="text/javascript">
function hiddens()
{
   var f = document.f;
   if(f.ga.selectedIndex == 1)
   {

      document.getElementById("form_tickrate").style.display = "inline"
   }
</script>
<form id="form_game" name="f" >
<select id="Antwort_game" onchange="hiddens()" name="ga"></select>
</form>

<form name="form_tickrate" style="display:none;">
<select id="Antwort_tickrate"></select>
</form>
 
Was will ich mit none, standardmäßig ist es doch schon ausgeblendet, will doch das es wieder eingeblendet wird...!!
siehe da das es standardmäßig ausgeblendet ist:
Code:
<form name="form_tickrate" style="display:none;">
 

Neue Beiträge

Zurück