Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ajax] jak zacząć z XMLem, problem rozwiązany
chomiczek
post 28.03.2006, 09:23:12
Post #1





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


Witam, mam problem, a mianowicie chciałbym dynamicznie zmieniac jakieś elementy strony i nie ma problemu, zebym użył do tego celu XML, póki co używam czegos takiego w JS:
Kod
advAJAX.get({ url: "look.php?symbol="+p, tag: "symbol" });
      advAJAX.get({ url: "look.php?rozmiar="+p, tag: "rozmiar" });
      advAJAX.get({ url: "look.php?skora="+p, tag: "skora" });
      advAJAX.get({ url: "look.php?fotoD="+p, tag: "fotoD" });
      advAJAX.get({ url: "look.php?link="+p, tag: "zapytanie" });


o wiele lepiej byloby utworzyć mi plik XMLa i przesłać go do przeglądarki tylko jak określi gdzie ma zostac użyty jaki znacznik??

Ma ktoś moze przykładowy plik z XMLem??

P.S. rozumie, ze jakis parser XML.
P.S.2. znalazłem http://advajax.anakin.us/phpsolutions/2.js ale troche nie czytelny dla mnie ten kod

Ten post edytował chomiczek 31.03.2006, 10:03:00


--------------------
created by chomiczek
Go to the top of the page
+Quote Post
TomASS
post 28.03.2006, 13:29:21
Post #2





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

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


Tak - będzie Ci potrzebny parser XML. Łukasz Lach bardzo elegancko to zrobił i z takiego rozwiązania należy korzystać. Skoro mówisz, że skomplikowany przykład to zobacz na tego posta i na funkcję JS parseRecords(xml). Nie zapomnij przy generowaniu plik XML o odpowiednich nagłówkach:
  1. header("Content-type: text/xml; charset=UTF-8"); 
  2. echo '<?xml version="1.0" encoding="UTF-8"?>';


Powodzenia


--------------------
Go to the top of the page
+Quote Post
chomiczek
post 28.03.2006, 13:40:34
Post #3





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


to akurat juz przerobiłem teraz chodzi mi o stworzenie prostego parsera:
przykładowy kod XML mam tutaj http://karamanski.pl/advAJAX/look.php?symbol=2
jak pokazać teraz na stronie to co biore z XMLa??


--------------------
created by chomiczek
Go to the top of the page
+Quote Post
TomASS
post 28.03.2006, 13:51:53
Post #4





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

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


Cytat
The XML page cannot be displayed
An invalid character was found in text content. Error processing resource 'http://karamanski.pl/advAJAX/look.php?symbol=2'....

Najpierw popraw aby był to poprawny kod XML.
Chyba nie za bardzo przyjżałeś się funkcji parsera:

Kod
function parseRecords(xml) {

var opttypes = document.getElementById("gminy");
record = xml.getElementsByTagName("record");
ID = new Array();
nazwa = new Array();
for (i = 0; i < record.length; i++) {
nazwa[i] = record[i].childNodes[1].childNodes[0].nodeValue;
ID[i] = record[i].childNodes[0].childNodes[0].nodeValue;

}


gdzie xml to obiekt obj.responseXML.
i masz:
pobierasz wszystkie record y (główne węzły):
Kod
record = xml.getElementsByTagName("record");

a późneiej w pętli przelatujesz przez każdego i pobierasz jego pierwszą i drugą wartość:
Kod
nazwa[i] = record[i].childNodes[1].childNodes[0].nodeValue;
ID[i] = record[i].childNodes[0].childNodes[0].nodeValue;


struktura XML w tym przypadku wyglada tak:
Kod
<record>                          //record[i]
<ID>Identyfikator</ID>   //record[i].childNodes[0].childNodes[0].nodeValue;
<name>nazwa</name>    //record[i].childNodes[1].childNodes[0].nodeValue;
</record>


Teraz jaśniej ? smile.gif


--------------------
Go to the top of the page
+Quote Post
chomiczek
post 28.03.2006, 14:20:26
Post #5





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


sądziłem, że już po problemie, a okazuje sie, ze jednak nie:
tutaj mam XMLa: http://karamanski.pl/advAJAX/look.php?symbol=1
tym plikiem przetwarzam look.php http://karamanski.pl/advAJAX/obuwie.php

  1. <script type="text/javascript">
  2. function parseRecords(xml)
  3. {
  4. symbol = xml.getElementsByTagName("symbol");
  5. ozn = symbol[0].childNodes[0].childNodes[0].nodeValue;
  6. symbol = symbol[0].childNodes[1].childNodes[0].nodeValue;
  7. skora = symbol[0].childNodes[2].childNodes[0].nodeValue;
  8. //alert(ozn+' '+symbol+' '+skora);
  9. }
  10. function zmienModel(p)
  11. {
  12. advAJAX.get({
  13. url : "look.php?symbol="+p,
  14. onInitialization : function() { },
  15. onSuccess : function(obj) { parseRecords(obj.responseXML); }
  16. });
  17. }
  18.  

ma ktoś jakis pomysł?

pod IE widze błąd: Obiekt nie obsługuje tej właściwości lub metody.

Prawie sobie poradziłem, brakowało VAR:
  1. function parseRecords(xml)
  2. {
  3. var symbole = xml.getElementsByTagName('symbol');
  4. var ozn = symbole[0].childNodes[0].childNodes[0].nodeValue;
  5. var symbolx = symbole[0].childNodes[1].childNodes[0].nodeValue;
  6. var skora = symbole[0].childNodes[2].childNodes[0].nodeValue;
  7. alert(ozn+' '+symbolx+' '+skora);
  8. }


Problem jest jeśli che użyć:
Cytat
$("ozn").innerHTML = 'dasdasd';

wywala komunikat: o oczekiwanym obiekcie w linii z powyższym kodem.

Ten post edytował chomiczek 28.03.2006, 15:44:31


--------------------
created by chomiczek
Go to the top of the page
+Quote Post
bigZbig
post 29.03.2006, 11:50:42
Post #6





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

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


@chomiczek - sprawdz co robi funkcja $() (zakladam ze poslugujesz sie w tym wypadku funkcja napisana przez Anakina), a potem spojrz co Ty podajesz jako argument tej funkcji.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
chomiczek
post 31.03.2006, 09:33:13
Post #7





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


Właściwie to nie wiem co masz na myśli, bo patrząc na przykładowy plik http://advajax.anakin.us/phpsolutions/2.js znajduje w nim:
  1. $("dataStats").innerHTML =
  2. "Rekordy: " + startId + " - " + (startId+getAttribute("count")*1-1) + " z " + total + " (Strona: " +
  3. (page+1) + " z " + maxPage + ")";
i tak naprawdę nie wiem czym ten zapis miałby sie różnić od mojego.

P.S. A może napiszesz mi co powinnienem napisać??


--------------------
created by chomiczek
Go to the top of the page
+Quote Post
TomASS
post 31.03.2006, 09:40:54
Post #8





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

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


A masz wogóle funkcję $:
Kod
function $(id){
  return document.getElementById(id);
}


--------------------
Go to the top of the page
+Quote Post
chomiczek
post 31.03.2006, 10:02:37
Post #9





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


hehe.. dzięki TomASS.. juz działa.. PZDR


--------------------
created by chomiczek
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: 24.04.2024 - 03:24