Witam,
Stronka, która korzysta z ajax wyświetla się poprawnie na wszystkich przeglądarchach z wyjątkiem IE. Być może mam jakiś błąd w pliku .js ale konsola Javascript w Firefoxie nie wyświetla żadnych komunikatów, które by mogły o tym świadczyć, dlatego nie wiem co jest przyczyną problemów.
Oto plik .js odpowiedzialny za prasowanie xml:
<?php
(...)
function parseRecords(xml) {
with (xml.getElementsByTagName("records").item(0)) {
page = getAttribute("page");
maxPerPage = getAttribute("max_per_page");
startId = maxPerPage*page+1;
total = getAttribute("total");
maxPage
= Math
.ceil(total
/maxPerPage
); if(maxPage < 1) maxPage = 1;
$("katalog_stopka").innerHTML = "Strona: <b>" + (currentPage) + " / " + maxPage + "</b>"
}
$("first").innerHTML = currentPage > 1 ? "<a href='javascript:changePage(-currentPage+1)' class='prev'> ‹‹ first</a>" : "‹‹ first";
$("prev").innerHTML = currentPage > 1 ? "<a href='javascript:changePage(-1)' class='prev'> ‹ prev</a>" : "‹ prev";
$("next").innerHTML = currentPage != maxPage ? "<a href='javascript:changePage(1)' class='prev'>next ›</a>" : "next ›";
$("last").innerHTML = currentPage != maxPage ? "<a href='javascript:changePage("+ (maxPage-currentPage) +")' class='prev'>last ››</a>" : "last ››";
$("wstecz").style.visibility = $("naprzod").style.visibility = $("sortuj_str").style.visibility = "visible";
$("kategoria_str").innerHTML = $("kategoria_hstr").value;
d = $("dataTable");
d.innerHTML = "";
record = xml.getElementsByTagName("record");
result = "";
div = document.createElement("div");
zawartosc = "";
if(record.length < 1){
zawartosc = '<div class="greendiv" style="margin: 150px auto"><div class="greendiv2">Nie znaleziono żadnych kartek</div></div>';
div.innerHTML = zawartosc;
d.appendChild(div);
}
for (i = 0; i < record.length; i++) {
if(i % 3 == 0) zawartosc += "<div class='thumb_row' style='margin:auto;'>";
zawartosc += "<div class='thumb' style='width: 180px'><div class='thumb_img' style='text-align:center'><a href='/Ekartki/Katalog/Kategoria/id"+record[i].childNodes[0].childNodes[0].nodeValue+"_"+record[i].childNodes[1].childNodes[0].nodeValue+"'><img src='/img/kartki/mini/"+record[i].childNodes[2].childNodes[0].nodeValue+"' class='img' style='width: 165px; height: 124px;'></a></div><div style='text-align: left; margin-left: 5px;'><table style='font-size: 9px; width:100%' class='link' ><tr><td class='small' style='width:50%'><img src='http://www.e-kartki.org/img/dys.gif' alt='ściągnięcia' /> "+record[i].childNodes[4].childNodes[0].nodeValue+"<br /><img src='http://www.e-kartki.org/img/kal.gif' alt='data dodania' /> "+record[i].childNodes[3].childNodes[0].nodeValue.substring(0, 10)+"</td><td class='small'><img src='http://www.e-kartki.org/img/tap.gif' alt='tapeta' /> <a href='javascript:displayWindow(\"/tapeta.php?jpg="+record[i].childNodes[2].childNodes[0].nodeValue+"\" ,1034,778)' class='small'>1024x768</a><br /><img src='http://www.e-kartki.org/img/tel.gif' alt='tapeta GSM' /> <a href='javascript:tapeciarz(\"img/kartki/"+record[i].childNodes[2].childNodes[0].nodeValue+"\" ,755,531)' class='small'>tapeta GSM</a></td></tr></table></div></div>";
if(i % 3 == 2) zawartosc += "</div>";
div.innerHTML = zawartosc;
d.appendChild(div);
}
return result;
}
function getRecords(){
advAJAX.get({
url : "/ajax/katalog.php?page="+currentPage+"&per_page="+maxPerPage+"&sort="+currentSort+"&keyword="+$("key_fraza").value,
onInitialization : function() {
$("kategoria_str").innerHTML = $("katalog_stopka").innerHTML = '<span style="font-weight: bold">Pobieranie danych...</span>';
$("wstecz").style.visibility = $("naprzod").style.visibility = $("sortuj_str").style.visibility = "hidden";
},
onSuccess : function(obj) {
parseRecords(obj.responseXML);
},
onError : function(obj) {
alert("Error: " + obj.status);
}
});
}
(...)
?>
Przykład:
http://e-kartki.org/Ekartki/Katalog/WidokiEDIT:
Już wiem, że przyczyną jest to, że
xml.getElementsByTagName("records").item(0) (5 linijka) w IE ma wartość null :|
Niestety nie wiem jeszcze dlaczego i jak temu zapobiec.
Proszę o pomoc
EDIT 2:
Narobiłem tyle rzyku a wystarczyło uświadomić IE, że xml jest w kodowaniu ISO-8859-2
Pozdrawiam
Ten post edytował son 23.04.2006, 07:36:07