Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ajax][js] responseXML a zwrócenie "suchego" tekstu
Forum PHP.pl > Forum > XML, AJAX > AJAX
Chys
Może najpierw pokażę kod, będzie mi łatwiej wytłumaczyć w czym problem.
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <response>
  3. <action type="create">
  4. <content tag="div" parent="web" id="header">
  5. <ul>
  6. <li><a href="index.php">Strona Główna</a></li>
  7. </ul>
  8. </content>
  9. </action>
  10. </response>

Jest to kod generowany przez serwer, który jest pobierany obiektem xmlHttpRequest, i w zależności od znacznika <action> są podejmowane różne decyzje. W tym przypadku zostanie stworzony element <div> o id "header", zostanie podpięty do elementu z id "web". I teraz jest problem: chciałbym elementowi "header" nadać innerHTML taki, jaki tekst między znacznikami <content>, dopóki nie ma tam żadnych znaczników to tekst jest cały, jednak nie wiem jak dodać znaczniki, dlatego proszę o pomoc.

Teraz to już w ogóle zgłupiałem...
  1. ...
  2. function handleResponse()
  3. {
  4. xmlResponse = xmlHttp.responseXML;
  5. xmlRoot = xmlResponse.documentElement;
  6. var actionArray = xmlRoot.getElementsByTagName('action');
  7. for (var i = 0; i < actionArray.length; i++)
  8. {
  9. doActionResponse(actionArray.item(i));
  10. }
  11. }
  12. function doActionResponse(action)
  13. {
  14. var content, child, parent;
  15. switch (action.getAttribute('type'))
  16. {
  17. case 'create':
  18. contentArray = action.childNodes;
  19. for (j = 0; j < contentArray.length; j++)
  20. {
  21. content = contentArray[j];
  22. child = document.createElement(content.getAttribute('tag'));
  23. child.id = content.getAttribute('id');
  24. if (content.firstChild.nodeType == 1)
  25. //child.appendChild(content.firstChild);
  26. else
  27. child.innerHTML = content.firstChild.data;
  28. parent = $(content.getAttribute('parent'));
  29. parent.appendChild(child);
  30. }
  31. break;
  32. ...

Linia opatrzona komentarzem - child.appendChild(content.firstChild); - wywala błąd odczytu odpowiedzi w Internecie Explorerze i Safari, a w Firefoxie i Operze węzeł content.firstChild jest wstawiany, tyle że, dziwnie się zachowuje... Cały tekst jest w 1 linii, nawet jak jest więcej elementów <li>, linki nie są "do kliknięcia" itp. Czy ktoś podpowie, co jest źle?
lord_t
Co do pierwszej części Twojego posta to wydaje mi się, że należałoby zamienić każdy < na & l t; i każdy > na & g t; . Każdy = każdy pomiędzy <content [...]></content>


edit: Znaki zaczynające się na & przechrzciło na to czemu odpowiadają, dlatego rozstrzeliłem druk -> to co pogrubione ma być bez spacji:)
Chys
Pomogło ;]
Dzięki ;]
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.