Autor Zpráva
Jiří Rozkovec
Profil
Ahoj,
doufám, že se tohle téma tu již neřešilo již tisíckrát, snažil jsem se něco najít, ale bezúspěšně.

Mám problém s innerHTML v IE 7,8, ve všech ostatních prohlížečích to vypisuje, ale tady ne. Zkoušel jsem pár testů a zjistil jsem, že v IE se innerHTML nezobrazí, jestliže do něj vkládám <p> nebo <div>, když tam vložím jakýkoliv text nebo inline element či tabulku, tak to nehlásí žádný problém.

Problém je na této stránce: www.flamengohk.cz/?pages=b&p=vysledky

kód s Ajaxem je zde:

function ajax(stranka, kam, prom)
{
  var httpRequest;

// vytvoření objektu XMLHttpRequest(), v IE se tento objekt vytváří jako activeX a navíc ještě dvou typů
  if (window.XMLHttpRequest)
  {
    httpRequest = new XMLHttpRequest();
  }
  else if (window.ActiveXObject)
  {
    try { httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (error) { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); }
  }

/* První parametr je typ požadavku (GET/POST), do druhého povinného parametru patří url, kterou chceme volat, třetí nepovinný parametr je typu boolean, pomocí něj nastavujeme jak budou data poslána. Defaultně je nastavený na true což znamená, že režim přenosu bude asynchronní (prohlížeč nebude čekat na výsledky). Pokud jej však nastavíme na false, znamená to, že režim přenosu bude synchronní, a prohlížeč při požadavku počka na výsledky (zamrzne). */
  if (prom != "") { stranka = stranka + "?prom=" + prom}
  httpRequest.open("GET", stranka, true); // stranka

// před samotným požadavkem, musíme nastavit funkci, která jej zpracuje
  httpRequest.onreadystatechange= function()
  {
    processRequest(httpRequest, kam);
  };

/* Tato funkce má jeden parametr, který se liší podle typu požadavku. Při požadavku GET dáváme proměnné přímo do url ve tvaru script.php?promnena=pokus&promena=pokus, proto do parametru send dáváme pouze null. U požadavku typu POST se proměnné nedávájí do URL, ale předávíji se funkci send() ve tvaru promnena=pokus&promena=pokus. U typu POST je dobré ještě před voláním send() nastavit správný Content-Type: http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); . */
  httpRequest.send(null);
}

function processRequest(httpRequest, kam)
{

// stav požadavku, který je v proměnné readyState, vrátit může hodnotu: 0 – neinicializováno, 1 – načítám, 2 – načteno, 3 – zpracovávám, 4 – hotovo
  if (httpRequest.readyState == 4)
  {

/* Status, vrací číslo chyby kterou obdrži od serveru, třeba 404, když stránka neexistuje apod. My testujeme status 200, což znamená, že vše proběhlo v pořádku. */
    if(httpRequest.status == 200)
    {
      if (typeof kam == 'string')
      {
        document.getElementById(kam).innerHTML = httpRequest.responseText;
        AlphaFade.alpha_show(kam,700,10,100);  // není původní kód z ajax.js
      }
      if (typeof kam == 'function') 
      {
        kam(httpRequest.responseText);
      }
    }
    else
    {
      alert("Chyba při načítání stránky " + httpRequest.status +" : "+ httpRequest.statusText);
    }
  }
  else
  {
    if (typeof kam == 'string' && kam != '')
    {
      document.getElementById(kam).innerHTML = 'Čekejte...';
    }
  }
}
Davex
Profil
Nejspíš mu vadí, že vkládáš kód do odstavce - změň všechny odstavce #detail_cislo na <div>y:
<div id="detail_1" class="details"></div>
Jiří Rozkovec
Profil
Díky moc!!! Funguje. Na to bych sám určitě nepřišel! :-))

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: