Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [advAJAX] Przetwarzanie pobranego XMLa
Seth
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Do pobierania danych i wyswietlania go w tabeli uzywam zmodyfikowanego przykladu ze strony Anakina:
http://advajax.anakin.us/phpsolutions/2.html

Wszystko pieknei dziala ale mam jedno pytanie:
Dlaczego gdy XML nie jest w jednej linii nie zostaje sparsowany?


Mam takze jeden maly problem, takze z XMLem.
Po zmodyfikowaniu JSa:

Kod
    var currentPage = 0;
    var currentSort = "companyName";
    var currentSortOrder = "ASC";
    var maxPage;
    var defaultTableData;
    
    function $(id) {
        return document.getElementById(id);
    }
    
    function recordClick(obj) {
        alert(obj.id);        
    }
    
    function parseRecords(xml) {

        with (xml.getElementsByTagName("records").item(0)) {
            page = getAttribute("page")*1;
            maxPerPage = getAttribute("max_per_page");
            startId = maxPerPage*page+1;
            total = getAttribute("total")*1;
            maxPage = Math.ceil(total/maxPerPage);
        }
        
        
        $("btnFirst").style.visibility = $("btnPrev").style.visibility = page == 0 ? "hidden" : "visible";
        $("btnLast").style.visibility = $("btnNext").style.visibility = page+1 == maxPage ? "hidden" : "visible";
        
        d = $("dataTable");
        for (i = d.rows.length-1; i >= 0; i--)
          d.deleteRow(i);
        record = xml.getElementsByTagName("record");
        result = "";
        
        for (i = 0; i < record.length; i++) {
            tr = document.createElement("tr");
            td = document.createElement("td");
            

                 if (i % 2 == 0) {
                     tr.className = "dark";
                 } else {
                     tr.className = "light";
                 }

                for (j = 0; j < 5; j++) {
                if (j == 0) {
                    tr.id = record[i].childNodes[j].childNodes[0].nodeValue;;
                    tr.setAttribute('onclick', 'recordClick(this)');
                    tr.style.cursor = "pointer";
                } else {
                td = document.createElement("td");
                td.innerHTML = record[i].childNodes[j].childNodes[0].nodeValue;
                tr.appendChild(td);
                }
            }
            d.appendChild(tr);
        }

        return result;
    }
    
    function initSearchForm() {
        advAJAX.assign(document.getElementById("searchForm"), {
            onInitialization : function() {
                $("dataStats").innerHTML = '<span>Searching...</span>';
                $("btnPrev").style.visibility = "hidden";
                $("btnNext").style.visibility = "hidden";
                $("btnFirst").style.visibility = "hidden";
                $("btnLast").style.visibility = "hidden";
            },
            
            onSuccess : function(obj) {
                $("dataStats").innerHTML = "";
                parseRecords(obj.responseXML);
                       addTableRolloverEffect('resultTable','rollover','');
            },
            

        onError : function(obj) {
            alert('dupa');
        }
            
        });
    }


...IE przestalo mi parsowac XMLA (FF, Opera dziala w porzadku).
No i nie mam pojecia co tu jest nie tak, gdyz IE odebral porpawnie sformatowany XML, ale podczas parsowania wywala blad (typu 'null' is not defined).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Xionc
post
Post #2





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 14.11.2005

Ostrzeżenie: (0%)
-----


Panowie, męczyłem się z tym responseXML cały dzień. U mnie też pod FF wszystko działało, a pod IE nie tworzył obiektu XML. Rozwiązanie okazało się banalnie proste:
1. XML MUSI być poprawny.
2. trzeba w pliku php generującym XML'a wrzucić nagłówek:

header('Content-Type: application/xml');

...od razu zaczęło działać. (advAjax 1.1.2)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 23:29