[ajax] problem z internet explorer

Odpowiedz Nowy wątek
2010-06-12 20:25
ajaxxx
0

mam taki kod:

function zmien(id)
{

    if  (window.XMLHttpRequest) 
        {
        xmlHttp = new XMLHttpRequest();
        }
        else
        {
        if (window.ActiveXObject)
            {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
    xmlHttp.onreadystatechange = function ()
    {
        if (xmlHttp.readyState == 4 || xmlHttp.status == 200)
            {
            document.getElementById('tresc').innerHTML = xmlHttp.responseText;
            }
        else alert('Niestety wystąpił błąd!');
    }

    document.getElementById('tresc').innerHTML = '<div class="loading"></div>';
    if ( id == 1 ) 
        {       
        xmlHttp.open("GET", 'pokaz.php?str=glowna', true);
        }
    xmlHttp.send(null);
    xmlHttp.overrideMimeType('text/html; charset=Windows-1250');

}

no jest ok niby na mozilli a na internet explorer pokazuje krzaki zamiast polskich znaków ;/ kodowanie mam windowsowe ;/
a kod tego pokaz.php to

if ( $_GET['str'] == 'glowna' )
    {
    //wysw

    //form

    echo '<div id=\'dodaj\'>

        <form method="post" action="">
            <table border="0">
                <tr>
                    <td><b>Tytuł:</b></td><td><input type="text" name="tytul" id="tytul" style="width:250px;"/></td>
                </tr>

                <tr> 
                    <td><b>Treść:</b></td><td><textarea name="tresc" id="pole" rows="0" cols="0" style="width:250px;height:130px;"></textarea></td>

                </tr>

                <tr>
                    <td><b><a href="">Kategoria</a>:</b></td><td><select style="width:250px;" name="kat"><option value="1">Koniec</option><option value="2">Duże ostrzeżenie</option><option value="3">Małe ostrzeżenie</option></select></td>

                </tr>

                <tr>
                    <td><input type="button" value="dodaj"/></td>
                </tr>
            </table>
        </form>
    </div>';
    }

bardzo prosze o pomoc:)

Pozostało 580 znaków

2010-06-12 20:55
0

Wiesz co? To Ci powinno nie chodzić za same pokiełbaszone wcięcia w kodzie JavaScript! Przyłóż się do nich, to pogadamy. W HTML-u masz tak ładnie, a w JavaScripcie sieczka. Przynajmniej tu na forum tak to wygląda, po wklejeniu.

Co do tych krzaczków, to wydaje mi się, że tworzona dla IE kontrolka ActiveX (Microsoft.XMLHTTP) w ogóle nie obsługuje metody overrideMimeType. Nawet teraz zerknąłem do dokumentacji i jej tam nie widzę. Po mojemu, to skrypt Ci się na tym wywołaniu overrideMimeType po prostu wywala w IE. Szczęście, że to ostatnia linia funkcji.

Ale tak czy inaczej, forsowanie typu MIME w IE nie zadziała. Musisz zadbać o to, by serwer wysyłał dane już w odpowiednim kodowaniu. Najprościej będzie chyba użyć w PHP funkcji header(...). Pogooglaj o tym.

Czy może już to masz?

Mogą być jeszcze inne powody. Na stronie właściwej możesz mieć inne kodowanie -- tu również wyślij odpowiedni nagłówek w PHP. Albo przeglądarka wchodzi Ci w tryb quirks. Co Ci się wyświetli, gdy w pasku adresu w IE wpiszesz poniższy kod?

javascript:alert(document.compatMode)

Zacznij jednak od upewnienia się, że wszędzie masz podefiniowane dobre typy MIME z właściwym kodowaniem.

Pozostało 580 znaków

2010-06-14 17:08
ajaxxx
0

wyswietla sie "CSS1Compat" a co do problemu to za pomoca header wysylam kodowanie i poki co działa ;]

dzieki

Pozostało 580 znaków

2010-06-14 17:21
0

To dobrze. A to "CSS1Compat" świadczy o tym, że DOCTYPE w Twoim kodzie został rozpoznany i przeglądarka nie weszła w tryb quirks (tryb zgodności wstecznej -- czasem naprawia bardzo stare strony, ale psuje nowsze, więc należy zadbać, by na nich się nie włączył).

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0