Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX] Problem z odczytaniem XML
radiowy
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 7.08.2008

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


Nie mogę odczytać pliku xml wygenerowanego przez PHP.

Jeśli skopiuję stronę do pliku .xml i odczytam ją za pomocą AJAX to działa. (url = "strona.xml")
Jeśli natomiast odczytuję plik za pomocą AJAX bezpośrednio z serwera (url= "//localhost/strona") nie działa:/ Nie widzi żadnego znacznika.

Prosze o pomoc!
Go to the top of the page
+Quote Post
AjaxSrajax
post
Post #2





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 22.03.2008
Skąd: Wrocław

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


No chyba żartujesz smile.gif To w pierwszym przypadku skąd odczytujesz plik? Przecież też z serwera, Chyba nie z MojeDokumenty? biggrin.gif
Może podajesz złą ścieżkę dostępu. Używasz request.responseXML?
Serwer musi obsługiwać XML, czyli serwować plik XML z odpowiednim nagłówkiem HTTP. Pokaż jakiś kod.
Go to the top of the page
+Quote Post
paziek
post
Post #3





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

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


Jeśli serwer po prostu wysyła tobie plik XML z innym typem jak text/xml, to dorzuć to
Kod
request.overrideMimeType('text/xml');

przed request.send()

Druga sprawa, to gdzie masz rozszerzenie pliku w tym drugim url? Jeśli nie posidasz na serwerze jakiegoś rodzaju content-negotiation, to musisz podawać pełne nazwy plików.
Trzecia sprawa, gdzie masz http: przed //localhost/strona ?
Go to the top of the page
+Quote Post
radiowy
post
Post #4





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 7.08.2008

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


ad1. W pierwszym przypadku używam serwera ale stronę mam zapisaną jako xml (http://serwer/moj_folder/dane1.xml) i to działa. Jeśli natomiast użyję ścieżki (http://serwer/ulice/1) gdzie dane są generowane dynamicznie przez PHP już nie widzi niczego. Używam request.responseXML

ad2. dorzuciłem "request.overrideMimeType('text/xml');" ale to nic nie dało. Może pokaże wam kawałek kodu i znajdziecie tu przyczynę czemu to nie działa:

if(XMLHttpRequestObject){
var lista = document.getElementById('lista');

var url = "http://serwer/ulice/1" // działa gdy użyję http://serwer/moj_folder/dane1.xml
XMLHttpRequestObject.open("GET", url);
XMLHttpRequestObject.onreadystatechange = function()
{
if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
var xml = XMLHttpRequestObject.responseXML;

var ulice = xml.getElementsByTagName('street');

}
XMLHttpRequestObject.send(null);
}
Go to the top of the page
+Quote Post
paziek
post
Post #5





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

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


w twoim przypadku będzie to XMLHttpRequestObject.overrideMimeType('text/xml'); - piszę tak na wszelki wypadek.

Jeśli .responseText zwraca poprawny dokument XML, to wtedy .responseXML powinno zwrócić go sparsowanego (jeśli nie jest wysyłany jako XML, to przy zastosowaniu overrideMimeType('text/xml'); )

Kod
if(XMLHttpRequestObject){
   var lista = document.getElementById('lista');

   var url = "http://serwer/ulice/1" // działa gdy użyję http://serwer/moj_folder/dane1.xml
   XMLHttpRequestObject.open("GET", url);
   XMLHttpRequestObject.overrideMimeType('text/xml');
   XMLHttpRequestObject.onreadystatechange = function() {
      if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
      var xml = XMLHttpRequestObject.responseXML;

      var ulice = xml.getElementsByTagName('street');
   }
   XMLHttpRequestObject.send(null);
}
Go to the top of the page
+Quote Post
radiowy
post
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 7.08.2008

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


Niestety nie pomogło. Pojawił mi się błąd w linii gdzie go napisałem:

XMLHttpRequestObject.open("GET", url);
XMLHttpRequestObject.overrideMimeType('text/xml');
XMLHttpRequestObject.onreadystatechange = function() // "Obiekt nie obsługuje tej właściwości lub metody"
{
if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
var xml = XMLHttpRequestObject.responseXML;
var ulice = xml.getElementsByTagName('street');
}
XMLHttpRequestObject.send(null);
}

W wersji którą wcześniej napisałem przeglądarka nie pokazuje żadnych błędów. Niby wszystko działa ale danych nie wyświetla

Ok juz dziala smile.gif Nie bylo bledu w kodzie, problem polegal na tym ze podawalem adres url z parametrami ktore nie byly interpretowane (czyli nie czyta http://serwer/miasto/1?count=0 mozna tylko http://serwer/miasto/1)

Wielkie dzieki za kazda podpowiedz.
Go to the top of the page
+Quote Post
ayeo
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Witaj na forum!

Chciałem tylko zwrócić uwagę, że jeżeli wklejasz próbkę kodu używaj znaczników BBcode, ok?

Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
paziek
post
Post #8





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

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


to może daj te overrideMimeType przed .send();

Sprawdź, czy w IE dobrze wywołujesz obiekt XHR?

Ten post edytował paziek 12.08.2008, 18:50:38
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 Aktualny czas: 21.08.2025 - 07:47