Autor | Zpráva | ||
---|---|---|---|
Legáček Profil |
#1 · Zasláno: 1. 8. 2012, 07:06:27
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 |
#2 · Zasláno: 1. 8. 2012, 07:39:35
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 |
#3 · Zasláno: 1. 8. 2012, 11:24:52
_es:
I když jsem vložil var XMLHttpRequestObjekt = false; if (window.XMLHttpRequest){ XMLHttpRequestObjekt = new XMLHttpRequest(); } else if (window.ActiveXObject){ XMLHttpRequestObjekt = new ActiveXObject("Microsoft.XMLHTTP"); } 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 |
#4 · Zasláno: 1. 8. 2012, 12:01:31
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 |
#5 · Zasláno: 1. 8. 2012, 12:25:18
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 |
#6 · Zasláno: 1. 8. 2012, 15:48:03
Reaguji na Legáčka:
„funguje to všech prohlížečích krom IE, který dosta null hodnotu“ Opravdu dostává null ? Zkoušel sis alert em 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 |
#8 · Zasláno: 2. 8. 2012, 11:07:43
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 |
#10 · Zasláno: 2. 8. 2012, 12:15:42
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. |
||
Časová prodleva: 12 let
|
0