Autor Zpráva
Legáček
Profil
Zdravím,

chtěl bych se zeptat jestli by se nenašla nějaká dobrá duše co by mi poradila s tímto problémem.
Pomocí ajaxu, načítám záznamy z databáze do textarea - funguje to všech prohlížečích krom IE, který dosta null hodnotu a tím pádem mi do textarea nic nevloží.

function vypisText(server, soubor, jazyk, kategorie){ 
  var date = new Date();                                                    
    if(XMLHttpRequestObjekt){      
      XMLHttpRequestObjekt.onreadystatechange = function()
      { 
        if (XMLHttpRequestObjekt.readyState == 4 && XMLHttpRequestObjekt.status == 200){
          tinyMCE.getInstanceById('textarea').setContent('');
          tinyMCE.execCommand('mceInsertContent', false, XMLHttpRequestObjekt.responseText);
          document.getElementById('zobrazit_text').innerHTML =  XMLHttpRequestObjekt.responseText;
          zobrazit_text(server, soubor, jazyk, kategorie);
          }
          }
        }
        XMLHttpRequestObjekt.open("GET", "model_upravit.php?server="+server+"&soubor="+soubor+"&jazyk="+jazyk+"&kategorie="+kategorie+"&date="+date.getTime(), true);
        XMLHttpRequestObjekt.send(null);
    }

Zkoušel jsem i přidat date.getTime() i header("Cache-Control: no-cache, must-revalidate") kvůli kešování, ale nepomohlo to.
Nemáte někdo nějaký nápad, jak to zprovoznit?
_es
Profil
Legáček:
načítám záznamy z databáze do textarea
Na úpravu textu v textarea sa používa jej vlastnosť value. Premenná XMLHttpRequestObjekt by mala byť definovaná vo vo funkcii vypisText.
Legáček
Profil
_es:
I když jsem vložil
var XMLHttpRequestObjekt = false;
    
    if (window.XMLHttpRequest){
      XMLHttpRequestObjekt = new XMLHttpRequest();
    } else if (window.ActiveXObject){
     XMLHttpRequestObjekt = new ActiveXObject("Microsoft.XMLHTTP");
    }
do vypisText, tak to nemohlo.
Ta textarea není vlastně obyčejná area, protože je to tiny-mce. Do ní by se měl text dostat právě tímto příkazem - tinyMCE.execCommand('mceInsertContent', false, XMLHttpRequestObjekt.responseText);, protože normálně přes hodnotu value to nefunguje.
Martin Adámek
Profil
Jestli to ve všem kromě IE funguje, tak zkus vložit znova celý element, ne jen jeho obsah.
Dělo se mi totéž u selectu, a našel jsem oficiální microsoftí popis bugu IE, že u IE není možný měnit jednotlivý položky
a musí se ten select obalit divem, a pak se mění obsah divu, tzn šoupne se tam znova celej select.
Třeba by to mohlo být to samé i u textarea.
_es
Profil
Legáček:
Ta textarea není vlastně obyčejná area, protože je to tiny-mce. Do ní by se měl text dostat právě tímto příkazem -
Tak na čo tam máš použité ešte aj innerHTML? A čo robí funkcia zobrazit_text?
Možno bude chyba niekde inde, na odhalenie takých chýb je vhodná „živá“ ukážka.
Chamurappi
Profil
Reaguji na Legáčka:
funguje to všech prohlížečích krom IE, který dosta null hodnotu
Opravdu dostává null? Zkoušel sis alertem vypsat XMLHttpRequestObjekt.responseText?
Proč nepoužiješ k nastavení nového obsahu editoru přímo ten setContent, který užíváš k mazání?


Reaguji na Martina Adámka:
Dělo se mi totéž u selectu, a našel jsem oficiální microsoftí popis bugu IE, že u IE není možný měnit jednotlivý položky
Možné to je docela snadno, ale ne pomocí innerHTML.

Třeba by to mohlo být to samé i u textarea.
U té změna innerHTML nemění hodnotu. Správný postup je měnit value, ne zahodit celý element a vyrobit ho znovu přes innerHTML.
Legáček
Profil
Chamurappi:
Ha, máš pravdu od ie se mi nevrací ani to null. Nic se mi prostě nevrací, to je ten hlavní problém - nevím proč se IE nic nevrátí z php souboru. To že vkládám do textarea text buď přes mceInsertContent nebo setContent('') je asi jedno. (Ani výměna nejde).
_es:
zobrazit_text už mění jen pár obrázků. Ten innerHTML tam nemá být ...
_es
Profil
Legáček:
Ten innerHTML tam nemá být ...
No a ako máme vedieť, čo tam teraz má či nemá byť a je či nie je? V [#5] si bol už požiadaný o dostatok informácií, napriek tomu tu len opakuješ „nefunguje to“, z toho ti asi nikto dostatočne neporadí.

Chamurappi:
Správný postup je měnit value, ne zahodit celý element a vyrobit ho znovu přes innerHTML.
Alebo v tomto prípade na ten účel používať len metódy TinyMCE.
Legáček
Profil
Tak jsem zjistil, že je to v tom php souboru, který odesílá odpověď.
Přes tento script se v proměnné kategorie ukládá text, který je třeba "Hořčice", všechny prohlížeče ho přeloží v dobře, jen IE si ho sebere z inputu type="hidden" se špatným kódováním, proto při hledání v databázi nenajde žádný výsledek a proto mi nazpátek nepošle nic.

MySQL kódovaní v phpadmin mám v pořádku to vím. Jen nechápu, proč to kódování nefunguje zrovna u IE.
_es
Profil
Legáček:
Tak jsem zjistil, že je to v tom php souboru, který odesílá odpověď.
Přes tento script se v proměnné kategorie ukládá text, který je třeba "Hořčice", všechny prohlížeče ho přeloží v dobře, jen IE si ho sebere z inputu type="hidden" se špatným kódováním
Moceš jedno cez druhé, namiesto toho, aby si dal „živú ukážku“. Tvrdil si, že ti to má dať do textarea, tak o akom inpute to píšeš? Čo je to „input so zlým kódovaním“? Kódovanie sa snáď nastavuje pre celý výstup z PHP.

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:

0