<html> <head> <script type="text/javascript"> var zapytanie = false; var opcje; if(window.XMLHttpRequest){ zapytanie = new XMLHttpRequest(); } else if(window.ActiveXObject) { zapytanie = new ActiveXObject("Microsoft.XMLHTTP"); } function opcjee(schemat){ var url = "opcje.php"; if(zapytanie){ zapytanie.open("POST", url); zapytanie.setRequestHeader('Content-Type', 'application/x-www-form-urlencode'); zapytanie.onreadystatechange = function(){ if(zapytanie.readyState == 4 && zapytanie.status == 200){ var danexml = zapytanie.responseXML; opcje = danexml.getElementsByTagName("option"); listaOpcji(); } } zapytanie.send("schemat="+schemat); } } function listaOpcji(){ var selectControl = document.getElementById("optionList"); for (var i = 0; i < opcje.length; i++ ){ selectControl.options[i] = new Option(opcje[i].firstChild.data); } } function setOption (){ document.body.style.backgroundColor = opcje[document.getElementById ('optionList').selectedIndex].firstChild.data; } </script> </head> <body> <form> <select size="1" id="optionList" onchange="setOption()"> </select> <input type = "button" value= "Użyj schematu kolorów 1" onclick = "opcjee(1)"> <input type = "button" value= "Użyj schematu kolorów 2" onclick = "opcjee(2)"> </form> </body> </html>
Na stronie znajdują się dwa przyciski i rozwijana lista. Wciśnięcie jednego przycisku powoduje wysłanie wartości '1' lub '2' do skryptu opcje.php który generuje kod xml. Następnie ajax łączy się ze skryptem i powinien pobrać dane po tagach <option>. Tak wygład skrypt opcje.php:
<?php if ($_POST["schemat"] == "1") if ($_POST["schemat"] == "2") foreach ($options as $value) { } ?>
Zmienna danexml zwraca null. Konsola wyrzuca taki błąd: Uncaught TypeError: Cannot call method 'getElementsByTagName' of null. Siedzę nad tym drugi dzień i nie potrafię tego rozgryźć. Ma ktoś pomysł co jest źle?
Problem rozwiązany. Zjadłem literkę na końcu
Kod
zapytanie.setRequestHeader('Content-Type', 'application/x-www-form-urlencode');