Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> brak obsługi skryptów przy zastępowaniu treści diva zawartością pliku
quaq
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.05.2013

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


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





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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.

Ten post edytował mortus 25.06.2013, 07:57:52
Go to the top of the page
+Quote Post
quaq
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.05.2013

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


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 (IMG:style_emoticons/default/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ą.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.09.2025 - 17:37