ugrás a tartalomhoz

AJAX probléma - select feltöltés nem megy IE alatt

Anonymous · 2006. Május. 22. (H), 11.49
Most kezdtem ele az AJAX-ot nézegetni és első nekirugaszkodásként megpróbálkoztam egy másik select-től függő select-box feltöltésével.
A gond annyi, hogy FF-ben rendben működik, de IE-ben "ismeretlen futásidejű hiba" üzenetet ad.

a kód:

var url = "ajax_hajo.php?beszallito_id="; 

function handleHttpResponse() 
{

  if (http.readyState == 4) 
  {
    if (http.responseText.indexOf('invalid') == -1) 
    {
      var out_text = ''; 

      var xmlDocument = http.responseXML;
      x = xmlDocument.documentElement.childNodes;
      for(var i=0; i< x.length; i++)
      {                            
         out_text += '<option value="' + xmlDocument.getElementsByTagName('value').item(i).firstChild.nodeValue 
                  + '"' 
                  + xmlDocument.getElementsByTagName('selected').item(i).firstChild.nodeValue 
                  + '>' 
                  + xmlDocument.getElementsByTagName('option').item(i).firstChild.nodeValue
                  + '</option>';
       } 
                               
       document.getElementById('kategoria_id').innerHTML = out_text;      
       
       isWorking = false;      
    }   
  }

}

var isWorking = false;

function liste_load() 
{      
 if (!isWorking && http) 
 {
    var beszallito_id = document.getElementById("beszallito_id").value;

    http.open("GET", url + escape(beszallito_id), true);

    http.onreadystatechange = handleHttpResponse;

    isWorking = true;

    http.send(null);
  }
}

function getHTTPObject() {

  var xmlhttp;

  if (window.XMLHttpRequest)
  {
     xmlhttp=new XMLHttpRequest();
     if(xmlhttp)
     {
        alert('FF http objektum OK'); 
     }
  }
  // code for IE
  else if (window.ActiveXObject)
  {
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
     if(xmlhttp)
     {
        alert('IE http objektum OK'); 
     }
       
  }
  return xmlhttp;  
}

var http = getHTTPObject(); 
a feltöltendő select:

  <select name="kategoria_id" id="kategoria_id">    		
  </select>
Hol lehet a hiba, ami miatt nem megy IE-ben?
Előre is köszönöm a segítséget.

laci
 
1

new Option()?

sotetbarna · 2006. Május. 22. (H), 12.26
Hali!

Én a szövegösszefűzögetés helyett az opciókat szépen feltölteném a new Option(text, value) javascriptes utasítássall, bár ajaxos hibát tesztkörnyezet nélkül nehéz debuggolni.
Bövebb infó a new Option használatáról például itt: http://www.experts-exchange.com/Web/Web_Languages/Q_20916437.html

Talán értelmesebb hibaüzenetet kapsz, ha bekapcsolod a Microsoft Script Debuggert (ha nincs telepítve, a microsoft-tól le lehet tölteni ingyen), bár a firebugtól elég messze van...

És talán a protoype-ot is érdemes lenne kipróbálnod: http://prototype.conio.net/, már magyar doksi is van hozzá.

Barna
2

Ajax

Anonymous · 2006. Május. 22. (H), 13.02
Ajaxozáshoz mindenféleképpen érdemes valami létező library-t használni:
http://prototype.conio.net/
http://xkr.us/code/javascript/XHConn/
http://microformats.org/wiki/rest/ahah

Százmilliószor jobban jársz, mintha a onreadystatechange-ekkel bírkóznál.

Gyulus
3

xml

Anonymous · 2006. Május. 22. (H), 17.57
Nem vagyok benne biztos, de lehet hogy az xml-es megoldas nem megy IE alatt.
En JSON-t hasznalok az adatkommunikaciora. Az megy mindket "nagy" bongeszo alatt. Valamint az IE meg az adatacsere karakterkodolasaban kulonbozik az FF-tol. utf-vs-megadott tipus.

Szerintem nem baj ha sajat ajax fv-eket hasznal az ember. Nem nagy kunszt. Minek toltsek be egy tobb szaz k-s libraryt 20-30 sor javascriptert....
5

tobb szaz k-s library?

Anonymous · 2006. Május. 22. (H), 19.54
Nézted is a linkeket, vagy csak írsz?
Az XHConn.js az negyven rövid sor, az ahah.js pedig hamincegy.
A prototype.js-nek pedig csak egy darabja az Ajax-os rész, és még így sem éri el az 50 KB-ot.

Az xml-es megoldás megy IE alatt.

Gyulus
4

köszi

Anonymous · 2006. Május. 22. (H), 18.29
köszönöm az eddigi hozzászólásokat. Még nagyon az elején vagyok és egyenlőre ilyen egyszerű ujjgyakorlatokkal próbálom felfogni a dolog lényegét.

A hiba valahol tutira ebben a kódrészletben van.

      x = xmlDocument.documentElement.childNodes;

      out_text +='<select name="kategoria_id">';
      out_text += '<option value="0">válassz kategóriát</option>'
      for(var i=0; i< x.length; i++)
      {                            
          out_text += '<option value="' + xmlDocument.getElementsByTagName('value').item(i).firstChild.nodeValue 
                  + '"' 
                  + xmlDocument.getElementsByTagName('selected').item(i).firstChild.nodeValue 
                  + '>' 
                  + xmlDocument.getElementsByTagName('option').item(i).firstChild.nodeValue
                  + '</option>';
                          
       } 
       out_text +='</select>';                        
       document.getElementById('select').innerHTML = out_text;
Igy már IE-ben is létrejön az üres select, csak a tartalom hiányzik :(
Na mindegy, bújom a tutoriálokat, de ha valakinek ötlete van, köszönettel veszem.

Laci
6

ie innerHTML bug

toxin · 2006. Júl. 15. (Szo), 15.03
http://support.microsoft.com/default.aspx?scid=kb;en-us;276228

üdv t