witam wszystkich.
Dopiero zaczynam naukę AJAXa a za żadne skarby nie potrafię namierzyć błędu dlaczego nie chce mi otwierać dokumentów XML. Mam nadzieję że znajdzie się ktoś i wskaże mi co robię nie tak.
Otóż jest to dość prosty skrypt.
Zasada jego działania jest taka:
w skrypcie options.php jest przechowywany dokument XML z odpowiednimi kolorami:
<?php
header("Content-type: text/xml"); if($_GET["sheme"]=="1"){
$options = array('red', 'green', 'blue'); }
if($GET["sheme"]=="2"){
$options = array('black', 'white', 'orange'); }
echo '<?xml version="1.0"?>'; foreach($options as $value){
}
?>
w pliku options.html wyświetlane są 2 przyciski które w zależności od wybranej opcji do listy rozwijanej dodają odpowiednie kolory:
<!DOCTYPE html>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" /> <meta http-equiv="Content-Language" content="pl" /> <script type="text/javascript" language="JavaScript" src="opcje3.js"></script> <h1>Przekazywanie danych przy użyciu ajax i xml
</h1> <select name="" size="1" id="optionList" onchange="setOption()"> <input type="button" value="schemat1" onclick="getOptions('1')"> <input type="button" value="schemat2" onclick="getOptions('2')"> <div id="targetDiv">text
</div> <!-- To jest miejsce na treść dokumentu -->
a to jest skrypt js który teoretycznie powinien to wszystko obsłóżyc:
var XMLHttpRequestObject = false;
if(window.XMLHttpRequest){
XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject){
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
var options;
function getOptions(scheme){
var url = "options2.php?scheme"+scheme;
if(XMLHttpRequestObject){
XMLHttpRequestObject.open("GET",url,true);
XMLHttpRequestObject.onreadystatechange = function(){
if(XMLHttpRequestObject.readystate == 4 && XMLHttpRequestObject.status == 200){
var xmlDocument = XMLHttpRequestObject.responseXML;
options = xmlDocument.getElementsByTagName("option");
listOptions();
}
}
XMLHttpRequestObject.send(null);
}
}
function listOptions(){
var i;
var selectControl = document.getElementById('optionList');
for(i=0;i<options.length;i++){
selectControl.options[i] = new Option(option[i].firstChild.data());
}
}
function setOption(){
document.getElementById('targetDiv').style.color = options[document.getElementById('optionList').selectedIndex].firstChild.data;
}
Problem polega na tym że nie pojawiają mi się w liście rozwijanej kolory mimo iż wybieram schemat 1 lub 2.
Będę bardzo wdzięczny za pomoc gdyby ktoś mi wskazał co robię nie tak.
Pozdrawiam i z góry dziękuję
Ten post edytował akersonek 15.02.2012, 19:31:28