ajax, jak wysweitlic dane na stronie pobrane w xml

0

Witam.
Obczajalem kilka przykladow dnamicznie zmienianych stron.
Ale przechodzac do praktycznych przykladow utknalem na czyms takim
Ze mam funkcje w JS wyglada tak:

function parseRecords(xml) {
	
    var seg = document.getElementById("segment");
    var seg_price = document.getElementById("price"); 

    record = xml.getElementsByTagName("record");
	ID = new Array();
	price = new Array();
	code = new Array();
	time = new Array();
	status = new Array();
	
    for (i = 0; i < record.length; i++) {        	
	ID[i] = record[i].childNodes[0].childNodes[0].nodeValue;
    	price[i] = record[i].childNodes[1].childNodes[0].nodeValue;
	code[i] = record[i].childNodes[2].childNodes[0].nodeValue;
	time[i] = record[i].childNodes[3].childNodes[0].nodeValue;
	status[i] = record[i].childNodes[4].childNodes[0].nodeValue;
    	
    	
    }    
       

    for(var i = 0; i < ID.length; i++) {
       seg = ID[i];
       seg_price = price[i];
   }
}

I nie wiem czy mam deklarowac dane i na stronie wszedzie gdzie chce je umiescici
dac odpowiednie DIV z ID = price DIV z ID = ID zeby mi sie w te miejsca pojawialy dane.
Czy skomponowac to w tej funkcji JS i wyswietlic caly kod HTMLOwy za pomoca innerHTML ?
czy moze w Jquery. Bo nie wiem czy inner dziala na wszystkohc przegladarkach.

Jak by to zrobic najlepiej ?

0

innerHTML jak najbardziej działa wszędzie, wsparcie dla niego jest bardzo dobre choć jest "niepisanym standardem" (tak, działa również w IE6). Pamiętaj jednak, że jeśli masz w jakimś elemencie E jakieś przyciski, do których masz podstawione zdarzenia, to ustawiając E.innerHTML tracisz te zdarzenia. Tracisz też wszystkie referencje do elementów znajdujących się wewnątrz E. Zwykle nie jest to problemem, czasem jest.

Zamiast innerHTML możesz też użyć DOM. Niekoniecznie getElementById -- jak zapewne wiesz, istnieją też inne funkcje DOM. Ma to ten plus, że update'ujesz tylko malutkie fragmenty strony, zmieniasz tylko to, co trzeba i nie tracisz żadnych funkcji obsługi zdarzeń. Z drugiej strony kod JS jest wtedy zwykle sporo bardziej skomplikowany, a całość często... chodzi wolniej niż jedno ustawienie innerHTML.

Btw. kilka porad.

Zawsze deklaruj zmienne, które mają być lokalne za pomocą var. Olewasz to w bloczku rozpoczynającym się od:

    ID = new Array();

I przez to zmienna ID i te kilka następujących są globalne. Jeśli nie taki był Twój zamiar, to właśnie masz bardzo niebezpieczny i niezbyt łatwy do wykrycia błąd.

Poza tym takie coś:

var tab = new Array();

Możesz zapisać za pomocą literału tablicowego:

var tab = [];

Dokładnie to samo, tyle że krócej.

Jeszcze jako ciekawostka, bo nie zawsze jest to przydatne. Jeśli chcesz dodać na koniec tablicy tab jakiś element elem, to możesz użyć po prostu funkcji push:

tab.push(elem);

Ostrzegę jeszcze na końcu, że takie wyciąganie czegoś z XML-a typu "trzeci węzeł wewnątrz drugiego węzła elementu-korzenia" jest delikatne. Można to stosować gdy masz pewność, że to, co wyrzuca serwer się nie zmieni. Bo każda nawet drobna zmiana może sprawić, że Twój kod po stronie klienta już tego nie przetworzy.

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