![]() |
![]() ![]() |
![]() |
![]()
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. Link oczywiście poprawnie wyświetla alert. Ten post edytował slammer 28.04.2007, 12:29:42 |
|
|
![]()
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 |
|
|
![]()
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()? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Ten post edytował snipe 30.04.2007, 16:50:41 |
|
|
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/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 |
|
|
![]()
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.
|
|
|
![]()
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. |
|
|
![]()
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?? |
|
|
![]()
Post
#8
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 072 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn ![]() |
wysyłany kod przepuścić przez eval?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 072 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn ![]() |
Odpowiedź w formie pytania (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Skoro przesyłasz ajaxem javascript to aby sie wykonał trzeba go wrzucić w eval bo inaczej jest traktowany jak zwykły tekst...
|
|
|
![]()
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?
|
|
|
![]()
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:
znalezione gdzies na forum (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) sprawdziłem i działa teraz bez zarzutu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif) |
|
|
![]()
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:
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. 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 (IMG:http://forum.php.pl/style_emoticons/default/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. |
|
|
![]()
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ć ;] |
|
|
![]()
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
|
|
|
![]()
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()(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 10.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
nie umiecie przepuścić wyniku przez eval()(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Wychodzi misiu na to że nie, pomogłeś mi że hej (IMG:http://forum.php.pl/style_emoticons/default/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:
Plik ten pobieram przez ajax`a i wrzucam do div`a. Przed wykonianiem :
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ę ... |
|
|
![]()
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.
|
|
|
![]()
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
|
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
mam ajaxa ktory ma wywalic skrypt ktory wyglada tak
Kod <?php $zapytanie = 'SELECT * FROM dane_firm WHERE id_firm = '.$_GET['id'].' '; $query = mysql_query($zapytanie); echo'<srcipt type="text/javascript">'; while($row = mysql_fetch_array($query)) { echo' var a = document.getElementById(\'naglowek_1\'); a.value = "'.$row['nip'].'"; var b = document.getElementById(\'a_5\'); b.innerHTML = "'.$row['nazwa_firmy'].'"; var c = document.getElementById(\'b_11\'); c.value = "'.$row['kraj'].'"; var d = document.getElementById(\'b_12\'); d.value = "'.$row['wojewodztwo'].'"; var e = document.getElementById(\'b_13\'); e.value = "'.$row['powiat'].'"; var f = document.getElementById(\'b_14\'); f.value = "'.$row['gmina'].'"; var g = document.getElementById(\'b_15\'); g.value = "'.$row['ulica'].'"; var h = document.getElementById(\'b_16\'); h.value = "'.$row['nr_domu'].'"; var i = document.getElementById(\'b_17\'); i.value = "'.$row['nr_lokalu'].'"; var j = document.getElementById(\'b_18\'); j.value = "'.$row['miejscowosc'].'"; var h = document.getElementById(\'b_19\'); h.value = "'.$row['kod'].'"; var l = document.getElementById(\'b_20\'); l.value = "'.$row['poczta'].'"; '; if($row['rodzaj_podatnika'] == 1){ echo' var cb_1 = document.getElementById(\'b_8_1\'); cb_1.checked = true; '; }elseif($row['rodzaj_podatnika'] == 2){ echo' var cb_2 = document.getElementById(\'b_8_2\'); cb_2.checked = true; '; } } echo'</script>'; ?> możecie "przefiltrować" responseText w taki sposób:
no ale skrypt wykonuje tylko 2 pierwsze operacje a potem wywala blad Kod Błąd: niepasujący znacznik. Oczekiwano: </srcipt>. Plik źródłowy: http://localhost/viki/druk%20pcc3/lista.php?id=1&_uniqid=922999979 Wiersz: 29, Kolumna: 7 Kod źródłowy: </script> ----------------------------------^ i Kod Błąd: data[i] has no properties Plik źródłowy: http://localhost/viki/druk%20pcc3/druk.php Wiersz: 132 pozniej w poscie bylo napisane zeby dac wszystko w jednej lini ale tez mi to niedziala |
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 1 Dołączył: 5.10.2005 Skąd: Opole/Chorzów Ostrzeżenie: (0%) ![]() ![]() |
z tego co wiem to powinno być <script type="text/javascript"> (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) a poza tym sprawdź czy zmienna data coś zawiera, bo chyba jednak nie - alert(data.length) (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Ten post edytował snipe 18.05.2007, 21:18:53 |
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 19.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hmm mam ten sam problem i używam xajaxa który wrzuca podstrone do diva, niemam pomysłu jak do tego kodu użyć eval() może ma ktoś jakiś pomysł, albo ma ktoś lepsze rozwiązanie takiej funkcji, ale wymóg to działający php (w tej funkcji działa) no i javascript (który nie działa)
Javascript wykonuje sie nie używając xajaxa, a z xajaxem już nie:/ tu macie fragment kodu podstrony: A tu tą funkcje Xajaxa:
Ten post edytował Arnimag 4.07.2007, 18:31:07 |
|
|
![]()
Post
#24
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 0 Dołączył: 12.02.2007 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Hmm mam ten sam problem i używam xajaxa który wrzuca podstrone do diva, niemam pomysłu jak do tego kodu użyć eval() może ma ktoś jakiś pomysł, albo ma ktoś lepsze rozwiązanie takiej funkcji, ale wymóg to działający php (w tej funkcji działa) no i javascript (który nie działa) Javascript wykonuje sie nie używając xajaxa, a z xajaxem już nie:/ tu macie fragment kodu podstrony: A tu tą funkcje Xajaxa:
Może warto było przeczytać kilka postów wyżej co piszę na ten temat... |
|
|
![]()
Post
#25
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 19.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hmm wybacz ale jeżeli masz mnie tak odsyłać wyżej to lepiej nic nie pisz, najwidoczniej to z góry nie zbyt pasuje do mojego, albo ja też nie umiem znaleść tam dla mnie rozwiązania ( ja używam xajaxa a wyżej nie było żadnego z nim przykładu) a jak już tak odsyłasz to zrobił byś cytaty odpowiednich postów gdzie takowe rozwiązanie jest... ehh
|
|
|
![]()
Post
#26
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 0 Dołączył: 12.02.2007 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Cytat 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. oto i odpowiedź z powyżej http://forum.php.pl/index.php?showtopic=67...st=?entry354974 i mój post z tamtego topic'u Cytat :/ Tak to jest właśnie z technologiami openSourcowymi nie wszystkie mają do końca dobrą dokumentację :/ i to wkurza. Aby sobie poradzić z problemem który macie wystarczy dodać do twojej funkcji wywołanie $obj->addScriptCall Kod PHP1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php function testAjaxa($id) { $obj = new xajaxResponse(); $html = '<a href="images/zdjecie.jpg" rel="lightbox" title="my caption">image</a>'; $obj->addAssign($id,'innerHTML',$html); $obj->addScriptCall("mojaFunkcja", "argument1", "argument2"); return $obj; } ?> A oprócz tego warto zapoznać się z tymi metodami: xajaxResponse addAlert addAppend addAssign addClear addConfirmCommands addCreate addCreateInput addEvent addHandler addIncludeScript addInsert addInsertAfter addInsertInput addInsertInputAfter addPrepend addRedirect addRemove addRemoveHandler addReplace addScript addScriptCall getXML loadXML outputEntitiesOff outputEntitiesOn setCharEncoding xajaxResponse zakładam że interesują was najbardziej te: addIncludeScript - dodaje skrypt w JS który ma sie wykonać zasada dodawania jest taka $obj->addIncludeScript("mojefunkcje.js"); addScript - pozwala na wpisanie własnego skryptu do otrzymywanego pytania (nie wiem jak to nazwać :/ jest już prawie 2 i szare komórki idą spać) $obj->addScript("var x = prompt('Podaj jakiś tekst');"); addScriptCall - wywołuje funkjcę zawartą w zwracanej odpowiedzi. $obj->addScriptCall("mojaFunkcja", "argument1", "argument2"); Jak będę miał kiedyś czas to opiszę wszystkie metody zawarte w klasie xajax i funkcje. może się komuś przyda. I Wybaczam.... |
|
|
![]()
Post
#27
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 0 Dołączył: 24.05.2004 Skąd: krakow Ostrzeżenie: (10%) ![]() ![]() |
mam podobny problem, jeszzce nie mialem okazji sie z nim spotkac, uzywam advajax i mam taka funkcje ktora w parametrze ma wskazany plik ktory ma wrzucic do div'a:
wewnatrz dolaczonego kodu chce uzyc lightbox'a: <a href="../img/gallery/001.jpg" rel="lightbox" title=""> <img src="../img/gallery/001s.jpg" width="" height="" alt="" title="" /> </a> i niestety nie dziala wyswietlanie obrazka w lightbox przez to ze jest to wrzucone do div'a przez ajax. lightbox mam umieszczony w naglowku glownego pliku: <script type="text/javascript" src="js/lightbox.js"></script> czy powinienem ten plik js dolaczyc w pliku ktory wrzucam do div'a i przepuscic go przez eval() jak ktos sugerowal zeby zadzialalo? czy mozna to inaczej rozwiazac? pozdr |
|
|
![]()
Post
#28
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tzn. plik lightbox -a dobrze ze masz w pliku głównym przez eval() przerzuć to co ladujesz do diva. Chodz teoretycznie powinno działać
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 27.09.2025 - 02:31 |