Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ajax][js] responseXML a zwrócenie "suchego" tekstu
Chys
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.04.2007

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


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?
Go to the top of the page
+Quote Post
lord_t
post
Post #2





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


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:)

Ten post edytował lord_t 6.01.2008, 18:48:27


--------------------
Go to the top of the page
+Quote Post
Chys
post
Post #3





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.04.2007

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


Pomogło ;]
Dzięki ;]

Ten post edytował Chys 6.01.2008, 18:03:26
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 Aktualny czas: 22.08.2025 - 05:38