Witam mam taki problem , otóż tworzę sobie pewien serwis i potrzebuję funkcjonalności dzięki której po wybraniu jednej opcji z selecta (są to państwa) w drugim formularzu automatycznie wczytują się regiony tego kraju . Napisałem oto taki kod w JS/Ajax

dane wczytują się bezpośrednio z pliku XML wygenerowanego przez PHP

Parę godzin nauki Ajaxa i JS oraz pisania kodu . Ale niestety działa to tylko w Firefox natomiast Internet Explorer wariuje a google chrome nawet nie ruszy . Proszę o pomoc mam mierne doświadczenie w Ajaxie

Ozłocę kogoś kto mi rozwiąże ten przykład

  1.  
  2. <script language="javascript">
  3. var XMLHttpRequestObject = false;
  4. if (window.XMLHttpRequest) {
  5. XMLHttpRequestObject = new XMLHttpRequest();
  6. }else if (window.AtiveXObject) {
  7. XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  8. }
  9. function getData(dataSource,divID,val)
  10. {
  11. if(XMLHttpRequestObject) {
  12. var obj = document.getElementById(divID);
  13. dataSource += val.options[val.selectedIndex].value;
  14. XMLHttpRequestObject.open("GET", dataSource);
  15. XMLHttpRequestObject.onreadystatechange= function()
  16. {
  17. if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
  18. xmlDocument= XMLHttpRequestObject.responseXML;
  19. region= xmlDocument.getElementsByTagName("region");
  20. var il = obj.options.length -1;
  21. // usuwanie
  22. for(id=0;id<= il; id++ ) {
  23. obj.options.remove(id);
  24. }
  25. // usuwanie
  26.  
  27.  
  28.  
  29.  
  30. for(id=0;id<=region.length -1 ; id++ ) {
  31.  
  32. var op=document.createElement("option");
  33.  
  34. try
  35. {
  36. // for IE earlier than version 8
  37. obj.options.add(op,null);
  38. obj.options[id].value=id;
  39. obj.options[id].text ="ee";
  40. }
  41. catch (e)
  42. {
  43. obj.add(op,null);
  44. }
  45. }
  46.  
  47. for(id=0 ; id<= region.length -1 ; id++ ) {
  48.  
  49.  
  50.  
  51. obj.options[id].text = region[id].firstChild.nodeValue;
  52. obj.options[id].value = region[id].id;
  53.  
  54.  
  55. }
  56.  
  57. }
  58. }
  59. XMLHttpRequestObject.send(null);
  60. }
  61. else
  62. {
  63. alert("problem");
  64. }
  65. }



zamieszczam cały widok
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
  4.  
  5. <title>Panel WWW</title>
  6. <?PHP $this->setCss('admin_main.css'); ?>
  7. <?PHP $this->setJs('jquery.js'); ?>
  8. <?PHP $this->setJs('function.js'); ?>
  9.  
  10. <script language="javascript">
  11. var XMLHttpRequestObject = false;
  12. if (window.XMLHttpRequest) {
  13. XMLHttpRequestObject = new XMLHttpRequest();
  14. }else if (window.AtiveXObject) {
  15. XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  16. }
  17. function getData(dataSource,divID,val)
  18. {
  19. if(XMLHttpRequestObject) {
  20. var obj = document.getElementById(divID);
  21. dataSource += val.options[val.selectedIndex].value;
  22. XMLHttpRequestObject.open("GET", dataSource);
  23. XMLHttpRequestObject.onreadystatechange= function()
  24. {
  25. if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
  26. xmlDocument= XMLHttpRequestObject.responseXML;
  27. region= xmlDocument.getElementsByTagName("region");
  28. var il = obj.options.length -1;
  29. // usuwanie
  30. for(id=0;id<= il; id++ ) {
  31. obj.options.remove(id);
  32. }
  33. // usuwanie
  34.  
  35.  
  36.  
  37.  
  38. for(id=0;id<=region.length -1 ; id++ ) {
  39.  
  40. var op=document.createElement("option");
  41.  
  42. try
  43. {
  44. // for IE earlier than version 8
  45. obj.options.add(op,null);
  46. obj.options[id].value=id;
  47. obj.options[id].text ="ee";
  48. }
  49. catch (e)
  50. {
  51. obj.add(op,null);
  52. }
  53. }
  54.  
  55. for(id=0 ; id<= region.length -1 ; id++ ) {
  56.  
  57.  
  58.  
  59. obj.options[id].text = region[id].firstChild.nodeValue;
  60. obj.options[id].value = region[id].id;
  61.  
  62.  
  63. }
  64.  
  65. }
  66. }
  67. XMLHttpRequestObject.send(null);
  68. }
  69. else
  70. {
  71. alert("problem");
  72. }
  73. }
  74. </script>
  75.  
  76.  
  77. </head>
  78. <body>
  79.  
  80. <div id="contener">
  81. <?PHP $this->menu->render(); ?>
  82.  
  83. <div id="worklabel">
  84. <form action="index.php?act=admin&exec=addprzewoznik&func=add" method="POST">
  85. <table class="row-table">
  86. <tr class="row-input"><td>Nazwa Firmy</td></tr>
  87.  
  88. <tr class="row-input"><td><input type="text" name="name" class="row"></td></tr>
  89. <tr class="row-input"><td>Email</td></tr>
  90.  
  91. <tr class="row-input"><td><input type="text" name="email" class="row"></td></tr>
  92. <tr class="row-input"><td>Telefon</td></tr>
  93.  
  94. <tr class="row-input"><td><input type="text" name="phone" class="row"></td></tr>
  95.  
  96. <tr class="row-input"><td>Strona WWW</td></tr>
  97.  
  98. <tr class="row-input"><td><input type="text" name="www" class="row"></td></tr>
  99.  
  100. <tr class="row-input"><td>Kraj</td></tr>
  101.  
  102. <tr class="row-input"><td><select name="country" class="row" onChange="getData('index.php?act=ajax&exec=country&id=','reg',this)" ><?PHP foreach($this->country as $cs) { ?> <option value="<?PHP echo $cs['id_country']; ?>" > <?PHP echo $cs['name_country']; ?> </option> <?PHP } ?></select></td></tr>
  103.  
  104. <tr class="row-input"><td>Nazwa Regionu</td></tr>
  105.  
  106. <tr class="row-input"><td><select name="reg" id="reg"><?PHP foreach($this->reg as $rg) { ?> <option value="<?PHP echo $rg['id_region']; ?>" > <?PHP echo $rg['name_region']; ?> </option> <?PHP } ?></select></td></tr>
  107.  
  108. <tr class="row-input"><td>Adres</td></tr>
  109.  
  110. <tr class="row-input"><td><input type="text" name="adres" class="row"></td></tr>
  111.  
  112. <tr class="row-input"><td>Opis</td></tr>
  113.  
  114. <tr class="row-input"><td><textarea name="description" class="row" style="height:100px;"></textarea></td></tr>
  115.  
  116. <tr class="row-input"><td>Logo</td></tr>
  117.  
  118. <tr class="row-input"><td><input type="file" name="logo" class="row"></td></tr>
  119.  
  120. <tr class="row-table-page"><td><input type="submit" value="Dodaj Przewoźnika" style="background:white;"></td></tr>
  121.  
  122. </table>
  123. </form>
  124. <center><?PHP echo $this->info; ?> </center>
  125. </div>
  126. </div>
  127. </body>
  128. </html>


dane w xml przykładowo
  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <options>
  4. <region id="1">Świętokrzyskie</region>
  5.  
  6. </options>


ps rozwiązanie było banalne . Google chrome podchodziło zbyt rygorystycznie do pliku XML . Musiałem wyeliminować wszystkie spacje itp w pliku generującym .
Teraz mam problem tylko z IE biggrin.gif który źle operuje na znacznikach option z select biggrin.gif