Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [advAJAX] Przetwarzanie pobranego XMLa
Seth
post 21.06.2006, 22:20:46
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 (1 - 12)
anopak
post 22.06.2006, 07:32:22
Post #2





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


w IE nie ma responseXML.... w IE trzeba sparsowac responseText do xml poprzez loadXML... czy naprawdę google jest tak trudne w użyciu?

przykład:
Kod
function getXML(x){
  if (typeof x.responseXML=='object'){
    if(x.responseXML.xml == '')
      x.responseXML.loadXML(x.responseText);
    return x.responseXML;
  }
  return null;
}


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
TomASS
post 22.06.2006, 08:20:34
Post #3





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


To co powiesz na to, że ja używam coś takiego z powodzeniem pod IE tongue.gif

Kod
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);
            $("dataStats").innerHTML =
              "Rekordy: " + startId + " - " + (startId+getAttribute("count")*1-1) + " z " + total + " (Strona: " +
              (page+1) + " z " + maxPage + ")";
        }
itd..

function getRecords() {
        advAJAX.get({
            url : "3.php",
            onSuccess : function(obj) {
                alert(obj.responseXML);
            }
        });
}


--------------------
Go to the top of the page
+Quote Post
bigZbig
post 22.06.2006, 08:20:45
Post #4





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


@Seth - a to Ci się dostało od kolegi anopaka winksmiley.jpg

Przeczytaj: Konwersja XML do tablicy w JavaScript (zastaosowanie w AdvancedAJAX) Może się przyda.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
revyag
post 22.06.2006, 10:27:25
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


Cytat
Dlaczego gdy XML nie jest w jednej linii nie zostaje sparsowany?

tiraeth miał chyba podobny problem
http://forum.php.pl/index.php?showtopic=45569&hl=


--------------------
-------------

------
Go to the top of the page
+Quote Post
anopak
post 22.06.2006, 13:55:09
Post #6





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


@bigZbig rozumiem, gdy ktoś pyta na forum o problem nie spotykany zbyt często, ale jeśli to jest typowy problem, to czemu pierwsze nie skorzystać z pomocy googla? ja nikogo nie winie o pytanie o pomoc, ale niekiedy chyba można troche więcej wysiłku włożyć niż tylko napisanie posta...


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
Seth
post 22.06.2006, 15:07:51
Post #7





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

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


@anopak: tego akurat nei musisz mi proponowac. Nie znalazlem wczesniej rozwiazania, wiec pisze tutaj.

Jeszcze poczytam to co podaliscie, ale chyba rozwiaze problem. Dzieki.
Go to the top of the page
+Quote Post
bigZbig
post 22.06.2006, 17:07:15
Post #8





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


@Seth - problem tkwi w tym, ze biale znaki to tekst, ktory w xmlu musi byc przechowywany w jakims elemencie. Element ten jest wezlem tekstowym, ktory trzeba uwzglednic poruszajac sie po strukturze xml.

@anopak - widzisz ja akurat znam Setha - nie osobiscie - ale wiem, ze jest to facet, ktory natrafiajac na problem probuje go samodzielnie rozwiazac. Czasami zwyczajnie nie przychodzi czlowiekowi do glowy co wpisac w googlach, albo bladzi po omacku. Puki co z ludzmi latwiej sie dogadac.

-- edit --
@anopak - a swoja droga to Twoje rozwiazanie nie jest tak naprawde zadnym rozwiazaniem tylko obejsciem problemu. Jednak sprawa nie jest wcale tak banalna.

Ten post edytował bigZbig 22.06.2006, 17:09:18


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
tiraeth
post 22.06.2006, 20:49:41
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


IE też parsuje mi XML używająć responseXML. Jedyny problem tkwił w tym, że nie chciał parsować gdy kodowanie było inne niż utf-8 smile.gif
Go to the top of the page
+Quote Post
Seth
post 27.06.2006, 11:35:48
Post #10





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

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


@tiraeth: ha! dokladnie w tym lezal problem biggrin.gif

@bigZbig: probowalem uzyc tego przykladu ale nijak nie szlo z moimi danymi :/

Inna sprawa to taka, ze mocno zastanwaiam sie nad tym jaki typ danych zwracac.
Mam dane w postaci zagniezdzonych drzewek, ktore musze wyswietlic w roznych miejscach.
Szczerze mowiac mozna sie pochlastac z ta cala obsluga XMLa w JSie :///

Czy ktos z Was ma jakies doswiadczenia we wstawianiu danych z XMLa - z dosyc rozbudowanego - wprost w rozne elementy strony?
Mecze to od dwoch dni i idzie mi tak opornie, ze powoli sie zalamuje sad.gif
Na necie nie znajduje tongue.gif prostej odpowiedzi na to aby jak najwygodniej sobie z tym poradzic.

--------------------------------------------- EDIT

Sam odpowiem na swoje pytanie winksmiley.jpg

JSON - dzieki temu oraz php-json mozna sobie zaoszczedzic mase czasu i nerwow z parsowaniem XMLa. Iha biggrin.gif

Ten post edytował Seth 27.06.2006, 11:36:17
Go to the top of the page
+Quote Post
Xionc
post 15.11.2006, 11:18:59
Post #11





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
Nero12
post 23.11.2006, 13:16:21
Post #12





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 27.08.2006

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


http://www.sitemax.ovh.org/nero/index2.htm

Nadal nie bardzo wiem jak doprowadzic xhtml do formy zrozumialem dla IE abym mogl plynnie poruszac sie po jego strukturze :|
Go to the top of the page
+Quote Post
Xionc
post 24.11.2006, 12:12:37
Post #13





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

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


XHTML? Hmm... ja wrzucam tylko czyste dane w XML i generuje z niego elementy xhtml'a. Ale może sie nie znam... tiredsmiley.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 05:47