Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP] Szablony stron + przesyłanie zawartości Ajaksem
Forum PHP.pl > Forum > Przedszkole
Asmox
Witam, wreszcie skończyłem czytać książkę o Ajaksie i postanowiłem zbudować stronkę w oparciu o szablon + asynchroniczne przesyłanie zawartości.
Niestety coś jest nie tak. Ten najważniejszy element szablonu wygląda na razie tak:
  1. <div id="content">
  2. <div id="content_in">
  3. <h2>Nagłówek zawartości</h2>
  4. <p>... oraz akapit pod nagłówkiem</p>
  5. </div> <!--(/content_in)-->
  6. </div> <!--(/content)-->

Content-in przechowuje zawartość. Zrobiłem to rozwiązanie, gdyż późniejsze użycie dopełnienia nie zmieni rozmiaru głównego pojemnika (content) i nie wysypie szablonu. Ale to tak BTW

Problem w tym, że przesyłana zawartość strony (w sensie sam tekst, umieszczany w content_in) nie jest przetwarzany jako HTML. W skrócie przesyłane <b>tekst</b> nie wyświetla się jako tekst, ale jako <b>tekst</b>.
Druga sprawa, to że nie działa czyszczenie elementu. Wrzucana zawartość jest wyświetlana razem z nagłówkiem zawartości i akapitem pod nagłówkiem.
I tak, kod napisany przeze mnie wygląda tak: (fragment)
Kod
var content = jsonData.content;
var contentEl = document.getElementById('content_in');
replaceText(contentEl, content);

Oraz gotowiec z książki:
Kod
function replaceText(el, text) {
  if (el != null) {
    clearText(el);
    var newNode = document.createTextNode(text);
    el.appendChild(newNode);
  }
}

function clearText(el) {
  if (el != null) {
    if (el.childNodes) {
      for (var i = 0; i < el.childNodes.length; i++) {
        var childNode = el.childNodes[i];
        el.removeChild(childNode);
      }
    }
  }
}

Podejrzewam, że html jest przetwarzany tylko podczas ładowania strony. Dlatego znaczniki nie są przerabiane. Jest jakiś sposób na załatwienie tego? Poza tym nie wiem dlaczego cały content_in nie jest czyszczony. Napisali, że clearText() czyści także węzły elementów, a nie tylko tekstu i muszę się z tym zgodzić, bo nie sprawdza, czy węzeł jest tekstem czy elementem.
everth
A ja podejrzewam że to.
Asmox
yeeeeeah dzięki
czyli po prostu innerHTML zamiast tych wszystkich funkcji
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.