Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: brak obsługi skryptów przy zastępowaniu treści diva zawartością pliku
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
quaq
joł forumowicze.
Jest sobie w pewnym pliku jakiś div, powiedzmy o id_diva "dupa". Gdzieś tam pełznie sobie też standardowa funkcja ajaxowa w postaci:
  1. function replace2(kategoria, id_diva) {
  2. http = getXMLHttpRequest();
  3. http.open("GET", "blabla.html", true);
  4.  
  5. http.onreadystatechange=function() {
  6. if( (http.readyState == 4)&& (http.status == 200) ) {
  7. document.getElementById(id_diva).innerHTML = http.responseText;
  8. }
  9. }
  10. http.send(null);
  11. }
  12.  
  13. function getXMLHttpRequest()
  14. {
  15. var request = false;
  16.  
  17. try {
  18.  
  19. request = new XMLHttpRequest();
  20. } catch(err1) {
  21. try {
  22.  
  23. request = new ActiveXObject('Msxml2.XMLHTTP');
  24. } catch(err2) {
  25.  
  26. request = new ActiveXObject('Microsoft.XMLHTTP');
  27. } catch(err3) {
  28. request = false;
  29. }
  30. }
  31. }
  32. return request;
  33. }
  34.  


Problem polega na tym, że po zastwowaniu funkcji "replace2" dowolny fragment kodu znajdujący się pomiędzy <script type="text/javascript"> a </script> w pliku blabla.html jest olewany przez jakąkolwiek przeglądarkę. Zaznaczam, że jeśli odpali się plik blabla.html bezpośredio, wszystkie linijki dżawaskriptu są posłusznie przetwarzane. Pytanie moje jest więc zasadnicze, WTF z tym ajaxem, że wyswietla sie wszystko, oprócz tego o czym wspomniałem. Rzućcie się proszę jakimś kodem, który zastąpi mi treść "dupy" pełną zawartością pliku blabla.html
mortus
Użyj np. jQuery. Chodzi o to, że http.responseText; jest w tej sytuacji traktowane jako zwykły HTML, a nie HTML DOM i ten DOM trzeba samemu zaktualizować. jQuery i pozostałe biblioteki JS rozwiązują ten problem.
quaq
mortus, rzadko uzywalem jquery (tylko w panelach administracyjnych php, żeby wyświetlać pasek postępu w trakcie działania skrypu), wiec nie mam zbyt dużej wiedzy, jak się z nim obchodzić. Poza tym, jego biblioteki są dosyć duże i spowalniają ładowanie się strony, a ta nad którą pracuję, nie jest zbyt zaawansowana smile.gif. Nie ma sposobu, żeby użyć jakieś innej metody z czystego javascript? Jeśli nie, to rzuć się please jakimś kodem, bo nie znam metod zastępowania tekstu z jquery i nie wiem, która dla tego przypadku byłaby tą najszybszą.
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.