Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [ajax] Problem z javascript
slammer
post 28.04.2007, 12:27:59
Post #1





Grupa: Zarejestrowani
Postów: 187
Pomógł: 6
Dołączył: 31.08.2005
Skąd: Bielsko-Biała

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


Problem polega na tym, że gdy wyświetlam na stronie responseText w którym jest fragment kodu javascript to w efekcie kod ten nie zostaje wykonany, po prostu nic sie nie dzieje. Gdy ten sam plik wyświetle normalnie na stronie to wszystko działa jak należy... Jak zrobić, żeby JS zadziałał przy wczytaniu z ajaxa?

To jest plik do którego odwołuję się przez ajax i zwracam go na stronie.


  1. <a href="java script: void(0)" onclick="alert('asd');">as
  2. <script language="JavaScript" type="text/javascript">
  3. alert('asd');
  4.  
  5. <form action="" method="post">
  6. <input type="hidden" name="order" id="order" value="" />
  7. <input type="submit" onclick="getSort()" value="Sortuj" />
  8. </form>



Link oczywiście poprawnie wyświetla alert.

Ten post edytował slammer 28.04.2007, 12:29:42
Go to the top of the page
+Quote Post
prond
post 30.04.2007, 13:19:50
Post #2





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

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


Spróbuj skorzystać z prototype'a tam masz metodę `update` w klasie `Element`
http://www.prototypejs.org/api/element/update

Możesz pobawić się samemu, ale jest z tym trochę roboty:
- wyciągasz z tekstu JS
- wklejasz go do HTML
- wykonujesz JS zawarty w tekście


--------------------
--------------------------------------------------------------------------------
weblog.axent.pl
--------------------------------------------------------------------------------
Go to the top of the page
+Quote Post
snipe
post 30.04.2007, 16:50:27
Post #3





Grupa: Zarejestrowani
Postów: 135
Pomógł: 1
Dołączył: 5.10.2005
Skąd: Opole/Chorzów

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


może przepuść wynik przez funkcję eval()? winksmiley.jpg

Ten post edytował snipe 30.04.2007, 16:50:41


--------------------
Go to the top of the page
+Quote Post
yaotzin
post 2.05.2007, 23:35:06
Post #4





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 12.02.2007
Skąd: Zielona Góra

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


Witam! mam podobny problem, z tym że ja używam biblioteki xajax do obsługi technologii AJAX, i w sumie wszystko sprawnie idzie, po za tym małym mankamentem jakim jest właśnie problem z javascript umieszczonym w zwracanym kodzie strony...

Czy ktoś jest w stanie mi pomóc z tym questionmark.gif

P.S. szukałem w dokumentacji xajax może jest jakaś gotowa funkcja która ten problem niweluje, mi się nie udało jej znaleźć :/

Ten post edytował yaotzin 2.05.2007, 23:36:59


--------------------
------
Per Aspera Ad Astra
Go to the top of the page
+Quote Post
drbane
post 3.05.2007, 19:00:10
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 9.10.2006

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


Witam, mam identyczny problem, wczytując coś do DIV co posiada JS i powinno się wykonywać - poprostu nie działa. Jak widzę problem jest spory bo nie ma żadnych odpowiedzi rozwiązujących to.


--------------------
only Google!
Go to the top of the page
+Quote Post
yaotzin
post 3.05.2007, 19:50:15
Post #6





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 12.02.2007
Skąd: Zielona Góra

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


Swoje już załatwiłem, w bibliotece xajax jest taka funkcja addScriptCall i addScript w zupełności wystarczyły do moich celów opisałem to w jakimś innym wątku.

A nie działa z tego powodu iż skrypt musiałby być wywołany przy ladowaniu strony, a przy ajax jest nieco inaczej i stąd problem, należy zrobić tak jak jest powyżej napisane albo użyć prototype.js (doskonały wzorzec projektowy) albo napisać własną funckcję temu służącą (może się ktoś podzieli :]) lub użyć tak jak ja to zrobiłem xajax i jego funkcji bibliotecznych. można też z xajax zgapić jak to jest zrobione metod jest wiele, a wynik pewnie jeden.


--------------------
------
Per Aspera Ad Astra
Go to the top of the page
+Quote Post
skowron-line
post 4.05.2007, 08:12:13
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


z przykroscia musze dolaczyc do dyskucji poniewaz mam taki sam problem z tym ze ja uzywam advAJAX i po sprawdzeniu w bazie w przypadku bledu chce zeby zwrocilo kod js ktory zmieni kolor pola input ale zamiast zmienic kolor kod jest wyswietlany.

Zna ktos rozwiazanie dla advAJAX??


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
kwiateusz
post 4.05.2007, 10:02:16
Post #8


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




wysyłany kod przepuścić przez eval?
Go to the top of the page
+Quote Post
skowron-line
post 4.05.2007, 10:07:56
Post #9





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Cytat(kwiateusz @ 4.05.2007, 09:02:16 ) *
wysyłany kod przepuścić przez eval?


to pytanie czy odpowiedz??


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
kwiateusz
post 4.05.2007, 10:13:40
Post #10


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




Odpowiedź w formie pytania smile.gif Skoro przesyłasz ajaxem javascript to aby sie wykonał trzeba go wrzucić w eval bo inaczej jest traktowany jak zwykły tekst...
Go to the top of the page
+Quote Post
drbane
post 4.05.2007, 15:11:37
Post #11





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 9.10.2006

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


No dobra, EVAL , ale jak tego użyć? Skoro mój skrypt wczytuje coś do DIV'a za pomocą .innerHTML? Jak użyć EVAL?


--------------------
only Google!
Go to the top of the page
+Quote Post
slammer
post 5.05.2007, 11:13:48
Post #12





Grupa: Zarejestrowani
Postów: 187
Pomógł: 6
Dołączył: 31.08.2005
Skąd: Bielsko-Biała

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


możecie "przefiltrować" responseText w taki sposób:

  1. item = myreq.responseText;
  2. data = item.split('\n');
  3. arraylen = data.length;
  4. var i = 0;
  5. while(i < arraylen)
  6. {
  7. if( data[i].indexOf("script") > -1)
  8. {
  9. i++;
  10. while(data[i].indexOf("/script") < 0)
  11. {
  12. eval(data[i]);
  13. i++;
  14. }
  15. }
  16. i++;
  17. }


znalezione gdzies na forum biggrin.gif sprawdziłem i działa teraz bez zarzutu winksmiley.jpg
Go to the top of the page
+Quote Post
box3r
post 6.05.2007, 12:41:37
Post #13





Grupa: Zarejestrowani
Postów: 52
Pomógł: 2
Dołączył: 24.05.2005

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


Może to pomoże



Czyli najważniejsze dodać javascript do objektu header;

poza tym w dodawanym .js można dodać funkcje która ma być od razu po załadowaniu wywołana.

no i guitar.gif
Go to the top of the page
+Quote Post
zaxx
post 10.05.2007, 17:48:38
Post #14





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 10.05.2007

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


Witam, przeczytałem wcześniejsze posty nie rozwiązało to mojego problemu. To mój kod:

  1. <script type="text/javascript">
  2.  
  3. if (window.XMLHttpRequest) {
  4. ObiektXMLHttp = new XMLHttpRequest();
  5. } else {
  6. if (window.ActiveXObject) {
  7. ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
  8. }
  9. }
  10.  
  11.  
  12. function getData(zrodlo, cel) {
  13.  
  14. if(ObiektXMLHttp)
  15. {
  16. var cel = document.getElementById(cel);
  17. ObiektXMLHttp.open("GET", zrodlo);
  18.  
  19. ObiektXMLHttp.onreadystatechange = function() {
  20. if (ObiektXMLHttp.readyState == 4) {
  21. cel.innerHTML = ObiektXMLHttp.responseText;
  22. }
  23. }
  24. ObiektXMLHttp.send(null);
  25. }
  26. }
  27.  
  28. </script>


Przy wykorzystaniu tego kodu pobieram podstronę i ją ładuję do div`a, no ale nie wykonuje się kod javascript tam zawarty, co jest logiczne, bo musi go przeglądarka przetworzyć a nie ma jak bo się strona nie przeładowała.



Cytat(box3r @ 6.05.2007, 12:41:37 ) *
Może to pomoże



Czyli najważniejsze dodać javascript do objektu header;

poza tym w dodawanym .js można dodać funkcje która ma być od razu po załadowaniu wywołana.

no i guitar.gif



To działa, ale tylko jak ładujesz zewnętrzne pliki js, a jak zrobić aby wykonał się kod między znacznikami <script>. Jak ktoś wiem, to prosił bym o jakieś konkretne rozwiązanie (co cza do mojego kodu dodać aby śmigało), bo przeglądnełem już chyba ze 100 storn www i kurna żadnych konkretów ... i proszę bez tekstów poszukaj w google, bo szuakłem i naprawdę ciężko coś znaleźć, powtarza się motyw z eval(), ale próbowałem i muszę chyba coś źle robić, bo za chiny mi to nie działa ... javascript to nie mój mocny punkt, ale chcę usprawnić portal napisany w php i gdyby nie ten problem , to szło mi nieźle z tym ajaxem..... z góry dzięki za odp.
Go to the top of the page
+Quote Post
konradk2
post 10.05.2007, 19:06:29
Post #15





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 28.12.2005

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


to ciekawe ja korzystam z innerHTML i mi wszystko poprawnie działa ;]
a i podczas wykorzystania innerHTML przeglądarka musi zinterpretować to co zostanie przypisane więc kod powinien się wykonać ;]
Go to the top of the page
+Quote Post
zaxx
post 10.05.2007, 19:25:23
Post #16





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 10.05.2007

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


No w ajaxie tak nie jest niestety ... kod się nie wykonuje
Go to the top of the page
+Quote Post
snipe
post 10.05.2007, 21:01:39
Post #17





Grupa: Zarejestrowani
Postów: 135
Pomógł: 1
Dołączył: 5.10.2005
Skąd: Opole/Chorzów

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


nie umiecie przepuścić wyniku przez eval()questionmark.gif


--------------------
Go to the top of the page
+Quote Post
zaxx
post 10.05.2007, 22:00:25
Post #18





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 10.05.2007

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


Cytat(snipe @ 10.05.2007, 21:01:39 ) *
nie umiecie przepuścić wyniku przez eval()questionmark.gif


Wychodzi misiu na to że nie, pomogłeś mi że hej laugh.gif

Efekt przepuszczenia przez eval(), jest taki że strona mi się przeładowała i wykonał się tylko kod javascript. Dla przykładu, w pliku jest kod:

  1. <script language="JavaScript" type="text/javascript">
  2. <!--
  3. document.write("<a class=\"link\" style=\"color:#a42626; font-weight:bold\" href=\"");
  4. document.write("mailto:");
  5. document.write("xxxx");
  6. document.write("@");
  7. document.write("wp.pl");
  8. document.write("\">");
  9. document.write("xxxxx");
  10. document.write("@");
  11. document.write("wp.pl");
  12. document.write("</a>");
  13. -->
  14. </script>

Plik ten pobieram przez ajax`a i wrzucam do div`a.

Przed wykonianiem :
  1. cel.innerHTML = ObiektXMLHttp.responseText;

wykonuję funkcję którą podał kolega kilka postów wyżej. Efekt w FF, strona się przeładowuje i wyświetla się link xxxxx@wp.pl , czyli kod się wykonał, tylko że nic po za nim nie ma. W IE nic się nie dzieje, tylko sygnalizuje błąd javascript. Więc pytam się jak to powinno wyglądać, bo może coś źłe robię ...
Go to the top of the page
+Quote Post
slammer
post 11.05.2007, 09:33:27
Post #19





Grupa: Zarejestrowani
Postów: 187
Pomógł: 6
Dołączył: 31.08.2005
Skąd: Bielsko-Biała

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


Kod działa tylko że jest mały zonk... trzeba całego JS zapisać w jednej linii... W przeciwnym wypadku zostanie zinterpretowana tylko jedna linijka kodu.
Go to the top of the page
+Quote Post
zaxx
post 12.05.2007, 18:05:04
Post #20





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 10.05.2007

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


Fakt, teraz jak dałem w jednej linii kod to działa ... ale kurna dużo zachodu z tym, chyba sobie podaruje tego ajaxa ..... pozdro
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:23