Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX][PHP] Szablony stron + przesyłanie zawartości Ajaksem
Asmox
post 18.08.2010, 16:03:16
Post #1





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


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.


--------------------
Go to the top of the page
+Quote Post
everth
post 18.08.2010, 16:44:49
Post #2





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


A ja podejrzewam że to.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
Asmox
post 18.08.2010, 17:02:20
Post #3





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


yeeeeeah dzięki
czyli po prostu innerHTML zamiast tych wszystkich funkcji


--------------------
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: 19.07.2025 - 15:44