« 1 2
Autor Zpráva
Daniel47
Profil
Firibix:
Takže řešit, že se diskuze nezobrazí v starších verzí vůbec nevadí, že?


Mě funguje moje diskuze pouze v IE10 a IE11.
Starší verze nefungují...
anonym_
Profil *
Daniel47:
Nnei důvod, aby se tam diskuze nezobrazila. Maximálně nebude ajaxova, pokud to neumíš napsat poradně.
Daniel47
Profil
anonym:
Ajaxem se stáhnou data diskuze a ty data se pak vypíšou do stránky. Problém je od IE 9 a níž to nefunguje.
Trejpa
Profil
Daniel47:
Ajaxem se stáhnou data diskuze
Myslím, že chyba není v IE, ale v přístupu programátora.

Stránka je uložena nebo se na základě parametrů vytváří primárně na straně serveru. Posílá se uživateli se všemi informacemi jako HTML. Ajaxem se podle potřeby dotahují změny/rozdíly pouze v případě, že je nutná aktualizace informací na stránce v reálném čase.
Daniel47
Profil
Trejpa:
Pomocí parametru se stránka vytváří na serveru.
Ta se pak zakóduje do base64 a hodí se to do JSONu i s dalšími informacemi. A pak JavaScript stáhne soubor JSON a dekóduje base64 na html.
A to se následně vykreslí na stránku.

Odkaz na json soubor zde:
dvolt.cz/data-diskuze?q-int=3
Firibix
Profil
Reakce na Daniela47:
zakóduje do base64
To je velmi neefektivní přístup. Zaprvé zbytečně plýtváš výkon serveru i návštěvníka, když musejí base64 enkódovat/dekódovat. Zadruhé tím zbytečně zvyšuješ objem dat, který se musí přenášet. HTML zakódované jako base64 je větší než původní kód a nedá se efektivně komprimovat. Pokud potřebuješ posílat vygenerované HTML, posílej ho normálně v plaintextu.

Otevři si v Exploreru nástroje pro vývojáře (klávesa F12) a podívej se, co ten tvůj AJAX vypisuje v konzoli za chybu. Pak se jí můžeš pokusit odstranit. Není důvod, aby jednoduchý XMLHttpRequest nefungoval i v Internet Exploreru.
Daniel47
Profil
Firibix:
Taky si myslím co jsem udělal, že je to blbost. Tak to změním a rozdělím HTML kód do plaintextu a další informace dám do JSONu.

A vyřeším podporu i pro starší verze než je IE10.

A ještě děkuji za odpověď!
Firibix
Profil
Reakce na Daniela47:
Tak jsem to nemyslel, HTML můžeš nechat v JSONu, jen ho tam zbytečně nekóduj do base64.
Daniel47
Profil
Firibix:
Nemůžu udělat, protože by to nefungovalo.
JSON:

{
   "html" : "<div class="test">Nějaký text</div>",
   "anitohle" : "<div onclick="document.getElementById('Neco').value = 'BlaBlaBla';">Klikni</div>"
}

Prostě by to nefungovalo... Nebo jo?
Radek9
Profil
Daniel47:
Jak ten JSON vytváříš? Použij normálně json_encode, to ti zajistí i správné escapování.
Daniel47
Profil
Radek9:
Takhle třeba:
PHP:

header("Content-Type: application/json; charset=utf-8");
echo(' {'.PHP_EOL);
echo('   "success" : false,'.PHP_EOL);
echo('   "errors" : "wrong parameter"');
echo(PHP_EOL.' }');



Že je to špatně?! :D
blaaablaaa
Profil
Daniel47:
$ret = [
    'success' => false,
    'errors' => 'wrong parameter'
];

echo json_encode($ret);
Radek9
Profil
Daniel47:
Ano.

echo json_encode([
  "success" => false,
  "errors": "wrong parameter",
  "html": $nějakáProměnnáObsahujícíHTML
]);

Edit: Hehe, pozdě.
Daniel47
Profil
blaaablaaa, Radek9:
Díky, ale co když budou v html obě věci " a '?


A to co přesně znamená v JSONu: =>
???
anonym_
Profil *
Daniel47:
To => nepatří do jsonu, ale do PHP. Je to v kontextu PHP kódu, jen náhodou ve funkci tvořící json.

Nauč se prosím základy (absolutní základy) technologii, s nimiž chceš pracovat (PHP, js) a pak se vrat s případnými dotazy.
Daniel47
Profil
anonym:
Díky, to jsem nevěděl.
« 1 2

Vaše odpověď

Mohlo by se hodit

Nezapomeňte na odkaz na živou ukázku problému.

Prosím používejte diakritiku a interpunkci.

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

0