![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 33 Pomógł: 3 Dołączył: 23.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam, jak odczytać konkretną wartość z responseText (np. div)?
Mam funkcję, które po wywołaniu przesyła mi dane z konkretniej strony(np. placek.php) i teraz chce z tej strony wybrać konkretny zestaw, który mnie interesuje czyli divy o konkretnych klasach oraz ewentualnie znaczniki. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Użyj jQuery i sobie pobieraj co chcesz przy pomocy zwykłych selectorów jQuery
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 33 Pomógł: 3 Dołączył: 23.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Wiadomo, że przy użyciu jQuery to nie jest żaden problem ale chciałbym zobaczyć alternatywę dla samego czystego js.
Jest jakiś konkretny sposób? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Zakładając, że w responseText masz kod HTML:
1. Tworzysz na jego podstawie nowy Document bądź DocumentFragment - najłatwiej będzie to zrobić przez innerHTML (i kilka "tricków" dla jego poprawnej obsługi w starszych wersjach IE). Dzięki temu całą pracę związaną z przetworzeniem tekstu na drzewo DOM zrzucisz na przeglądarkę. 2. Przy pomocy querySelector albo "zwykłych" metod DOM-u wybierasz interesujący Cię fragment. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 33 Pomógł: 3 Dołączył: 23.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Próbowałem sposobem powyżej tylko zamiast documentFragment używałem div'a ale i tak rezultat w tym przypadku jest identyczny.
Kod if (ajax.readyState==4 && ajax.status==200) { var top = document.createDocumentFragment(); top.innerHTML = ajax.responseText; document.getElementById("announce").innerHTML = top; } Wynikiem dla tego jest [object DocumentFragment] zamiast wartość responseText. Nie mam pojęcie dlaczego. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Przy pomocy innerHTML możesz wrzucić tekst zawierający HTML, ale nie obiekt DocumentFragment. Powinieneś skorzystać z appendChild().
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 33 Pomógł: 3 Dołączył: 23.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Kod if (ajax.readyState==4 && ajax.status==200) { var top = document.createDocumentFragment(); top.innerHTML = ajax.responseText; document.getElementById("announce").appendChild(top); } Konsola nie wyrzuciła mi żadnych błędów ale wyniku również. W pierwszej linijce tworzę DocumentFragment, w drugiej wstawiam do niego treść, a w trzeciej chce tą treść wyświetlić, która jest wstawiona w top. Nadal nie rozumiem co tu jest nie tak ![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Mały błąd z mojej strony. Nie możesz skorzystać z innerHTML bezpośrednio na obiekcie DocumentFragment. Jednym z najłatwiejszych objeść jest umieszczenie we fragmencie jakiegoś elementu i skorzystanie z innerHTML tego elementu:
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 33 Pomógł: 3 Dołączył: 23.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Faktycznie teraz wszystko działa aczkolwiek napotkałem kolejny problem, analizowałem kod kilka razy i szczerze nie mam pojęcia czy to kwestia serwisu czy jakieś gafy u mnie.
http://www.test-chat.pun.pl/userlist.php - z tej listy chce pobrać 6 nicków oraz ich odpowiednik postów Używam następującego kodu: Kod <div id="myDiv"></div> <script type="text/javascript"> /* Wyświetlanie top posterów w zależności od ustawionej liczby (i=15) za 15 liczbę posterów odjąć jeden bo odliczanie od 0 */ var ajax; if (window.XMLHttpRequest) { ajax=new XMLHttpRequest(); } else { ajax=new ActiveXObject("Microsoft.XMLHTTP"); } ajax.open("GET","userlist.php?username=&show_group=-1&sort_by=num_posts&sort_dir=DESC",true); ajax.onreadystatechange=function() { if(ajax.readyState==4 && ajax.status==200) { var top = document.createElement("div"); top.appendChild(document.createElement("div")); top.firstChild.innerHTML = ajax.responseText; for(i=0;i<=5;i++) { document.getElementById("myDiv").appendChild(top.getElementsByTagName("tbody")[0].getElementsByClassName("tcl")[i].getElementsByTagName("a")[0]); document.getElementById("myDiv").appendChild(top.getElementsByTagName("tbody")[0].getElementsByClassName("tc3")[i]); } } } ajax.send(null); </script> Niestety zamiast otrzymać wynik z 6 nickami i 6 wartościami w postach otrzymuje coś takiego: 123 312 Administrator 2 Test0 124 Zresztą wynik można zobaczyć w stopce. Jakieś sugestie? :/ |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 02:30 |