Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] AJAX'owa prezentacja wybanych treści nie działa pod IE.
Forum PHP.pl > Forum > Po stronie przeglądarki
kodereq
Oto kod JavaScript (jQuery) używany przeze mnie do cyklicznej prezentacji wybranego komentarza w przeznaczonym do tego celu div'ie.

Kod
$(document).ready(function(){
     updateComments();
      function showComments(xml) {
          $('#comments_box').html('');
          $("comment",xml).each(function(id) {
              comment = $("comment",xml).get(id);
              $('#comments_box').append("<div class=\"comm\">"+$("content",comment).text()+"</div>");
          });
      }
      function updateComments() {
          $.post("./backend/getComments.php", { } , function(xmlData) {
              showComments(xmlData);
          });
          setTimeout(updateComments, 10000);
      }    
  });


Jest on kompatybilny z wszystkimi fajnymi przeglądarkami, jednak nie działa pod żadną werją IE. Co może być powodem ?
nospor
czemu w ready() tworzysz definicje funkcji? Definicje tworzy sie poza ready(). w ready() nalezy wykonac coś, a ty tu nic nie wykonujesz.
poza tym postaw sobie co iles linii alert('dupa') a dowiesz sie gdzie sie skrypt wyklada

edit: widze ze updatnoles posta o updateComments(); Tak czy siak definicje funkcje wywal z ready()
Fifi209
Jak dla mnie wykłada się od razu...

Kod
$(document).ready(function(){
     updateComments();


W momencie jej wywołania nie jest zdefiniowana.
kodereq
lol, śmiga bez zdefiniowania - to niestety nie rozwiązanie. JS to [niestety] nie c++.

Chyba muszę zdedupować kod ^^.

Zdedupowanie mówi, że kod psuje się w pętli.

Kod
$("comment",xml).each(function(id) {
      comment = $("comment",xml).get(id);
      $('#comments_box').append("<div class=\"comm\">"+$("content",comment).text()+"</div>");
  });


Wszystko wygląda na to że kod chrzani się na przetwarzaniu xml, alert(xml) ładnie wyświetla kod xml, jednak już .get(0) nie śmiga pod IE.

Tak wygląda XML który dostaje showComments.

Kod
<?xml version="1.0"  encoding="utf-8" ?>
<response>
    <status>1</status>
    <comment>
        <author>Author</author>
        <date>Date</date>
        <product>Product</product>
        <mark>Mark</mark>
        <content>Lorem ipsum.</content>
    </comment>
</response>


Podczas walidacji w3c mówi "No errors found" natomiast to ustrojstwo: validome.org/xml/validate/ mówi: "Error: Can not find declaration of element 'response'".

Może to jest przyczyną ?
janusz85
Ten drugi walidator wyrzuca Ci błąd, bo w pliku XML nie podałeś DTD, który jest wymagany przez specyfikację. Ale nie musisz konstruować DTD dla każdej pierdółki wysyłanej do AJAX'a, to na pewno nie w tym jest błąd. Plik bez DTD powinien spokojnie przejść Ci przez parsery.
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.