Autor Zpráva
candiess
Profil
Dobrý večer, mám prosbu s řešením mého problému..
mám stránku (zatím testovací e-shop) -> Zde živá ukázka
vlevo nahoře mám minikošík, zobrazuje co je v košíku, je to přes funkci v JS..
function reload_mini_kosik() {
$.get("ajax.php?akce=reload_mini_kosik", function(vystup){
$("#radky-mini-kosik").html(vystup);
});
}

živá ukázka ajax.php?akce=reload_mini_kosik

ajax.php
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<meta http-equiv="content-Language" content="CS"/>
</head>
<body>
<?php
if(isset($_GET['akce'])) {
$akce = $_GET['akce'];

if($akce=="reload_mini_kosik") {
echo "<li>Počet položek: $pocet_polozek</li>
<li>Celková cena: $celkova_suma Kč</li>
";
}

}
?>
</body></html>


V Chrome to klape nádherně, ovšem mozilla už mi vypisuje
Po�et polo�ek: 0
Celkov� cena: 0 K�

a IE mi vypisuje to same, akorat misto otazníku píše čtverečky…

I když mám kodování i v indexu i na ajax.php, vypiuje mi to ve špatné znaky, muže mi někdo pomoci? děkuji :)
Taps
Profil
candiess:
odkaz na localhost nám asi moc neřekne
candiess
Profil
jo, omlouvám se..opraveno
Segi_L
Profil
A čo tak zmeniť windows-1250 za UTF-8? Ale súbory musia byť tiež uložené v UTF-8.
candiess
Profil
Segi_L
fakt že joo, tohle by mě nikdy nenapadlo..děkuju mooc..:))
Chamurappi
Profil
Reaguji na candiesse:
Stačí poslat charset v hlavičce Content-Type. To je tak provařený problém, že nechápu, proč kvůli tomu dnes dva lidi rezignovaně přešli na UTF-8…
candiess
Profil
Chamurappi:
ale ja ten charset poslal...
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />

mam ho i v indexu i na ajax.php ale prostě ty znaky furt nejdou
Segi_L
Profil
Hlavišku musíš poslať ako prvú.
<?PHP
header("Content-Type: text/html; charset=windows-1250");
if(isset($_GET['akce'])) 
{
  $akce = $_GET['akce'];
  
  if($akce=="reload_mini_kosik") 
  {
    echo "<li>Počet položek: $pocet_polozek</li>
    <li>Celková cena: $celkova_suma Kč</li>";
  }
}
?>


je to rovnaké ako keď generuješ obrázok napr png v PHP najprv pošleš hlavičku
header("Content-type: image/png");
aby prehliadač vedel ako má s kódom pracovať a potom vygenerovaný obrázok.
candiess
Profil
aha.. jo děkuji moc za pomoc :))
Witiko
Profil
Segi_L (a nejspíš i Chamurappi):
Hlavišku musíš poslať ako prvú.“ - <?php header("Content-Type: text/html; charset=windows-1250"); ?>

Směl bych se zeptat proč?

1) Data, která php script vygeneruje budou v obou případech (zaslána hlavička / nezaslána hlavička) zcela stejná.
2) Prohlížeč by s nimi měl také stejně zacházet a zobrazit je, pakliže má hlavičku určující znakovou sadu definovanou v meta tagu.
└ Jedná se přeci koneckonců o tag, který, pakliže má definovaný atribut http-equiv, nahrazuje / doplňuje přijaté http hlavičky.

Co přesně tedy na věci mění přijatá http hlavička?

EDIT: To samozřejmě neplatí, pokud data taháme ajaxem a dynamicky vepisujeme do toku dokumentu. Zmátl mě první příspěvek, ze kterého se zdál ajax.php být samostatným HTML dokumentem. Moje chyba.
Chamurappi
Profil
Reaguji na Witika:
To samozřejmě neplatí
Ono to není zase tak samozřejmé. Je to dobrá otázka, proč vlastně XMLHttpRequest dlabe na rozpoznávání kódování z obsahu u známých formátů, když jinak to prohlížeč umí. Nevím, proč to tak je, ale bohužel se s tím musíme smířit.
_es
Profil
Chamurappi:
Ono to není zase tak samozřejmé.“…„když jinak to prohlížeč umí
Ale XMLHttpRequest to načítava ako obyčajný nenaformátovaný text. Ak sa prehliadaču pošle súbor ako text/plain, tiež z meta značky neberie kódovanie.
Chamurappi
Profil
Reaguji na _es:
Ovšem Content-Type třeba u XML formátů vnímá dobře a tam je schopen podřídit se interní informaci. Chápu, že toto udělátko bylo určené primárně pro XML, ale když už umožňuje číst i jakýkoliv jiný text (což se časem stalo jeho nejčastější náplní práce) a stala se z něj nativní součást prohlížeče, mohl by rozumět MIME typům stejně chytře jako prohlížeč.
_es
Profil
Chamurappi:
Ovšem Content-Type třeba u XML formátů vnímá dobře a tam je schopen podřídit se interní informaci.
Ale pri použití metódy responseXML sa používa XML parser.
Pri použití responseText sa žiadny parser nepoužije - nie je treba.
Ak by to malo byť tak podobne chytré, musela by byť tá meta značka použiteľná aj mimo head html dokumentu a candiessovi to nefungovalo preto, že sa to inde použiť nedá.
Chamurappi
Profil
Reaguji na _es:
Pri použití responseText sa žiadny parser nepoužije - nie je treba.
Různé prohlížeče postupují různě, některé berou v úvahu encoding z XML deklarace i při čtení z responseText.

musela by byť tá meta značka použiteľná aj mimo head html dokumentu
To už v podstatě je. Její obvyklá pozice v hlavičce je sice optimální, ale prakticky nikoliv nezbytná. Před ní se stejně může vyskytnout něco, co obsahuje znaky, k jejichž správnému pochopení je nutná znalost kódování. Vzhledem k rozvolněnému přístupu k HTML v prohlížečích, kdy se na kontext berou ohledy pouze, pokud je to nezbytné, není až tak nepředstavitelné, že by libovolný načítaný HTML fragment (tedy zdroj typu text/html) mohl mít svoji deklaraci kódování. Nekoukalo by se na něj jako na samostatný dokument, ale jako na něco, co se dává do innerHTML.

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0