Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX] Problem z odczytaniem XML
Forum PHP.pl > Forum > XML, AJAX
radiowy
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!
AjaxSrajax
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.
paziek
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 ?
radiowy
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);
}
paziek
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);
}
radiowy
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.
ayeo
Witaj na forum!

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

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

Sprawdź, czy w IE dobrze wywołujesz obiekt XHR?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.