Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Run JavaScript after AJAX load
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> AJAX
Subiectul anterior :: Subiectul următor  
Autor Mesaj
boo



Data înscrierii: 24/Mar/2004
Mesaje: 223
Locație: Ploiesti

Trimis: Dum Feb 11, 2007 1:42 pm    Titlul subiectului: Run JavaScript after AJAX load  

Salut,
Am urmatoarea pagina:
Cod:
<div id="ceva">Loading...</div>

Ulterior, dupa rularea scriptului AJAX, pagina devine:
Cod:
<div id="ceva"><script type="text/javascript">alert("un text")</script></div>


Problema este ca nu imi functioneaza nici cum. Am tot cautat pe internet care ar fi problema si am gasit o situatie foarte asemanatoare ca a mea in care functiile javascript erau executate cu functia eval(). Am incercat si in acest fel si nu am reusit.
Aveti o solutie pentru problema de mai sus sau v-ati mai lovit de ea?
Multumesc
Sus  
Weedkid



Data înscrierii: 14/Ian/2007
Mesaje: 145
Locație: Brasov

Trimis: Dum Feb 11, 2007 2:14 pm    Titlul subiectului:  

hmm ..
sa zicem ca variabila de XMLHttpRequest este "http"
Cod:
http.open(<method>,<url>,true);
http.onreadystatechange = <o functie> // Functia care va fi apelata dupa ce se schimba statusul
http.send(null);

function <o functie>()
{
if (http.readyState == 4) // momentul in care informatia a venit inapoi de la server
{
 if (http.status == 200)
   {
      //.... Informatia a ajuns sau "s-a incarcat AJAX", cum ai zis tu
   }
}
 
}


btw: AJAX nu e script, nici limbaj de scripting
SFAT: daca nu intelegi scriptul, citeste tutorialul din nou
Sus  
tuwyx



Data înscrierii: 13/Iul/2005
Mesaje: 55
Locație: Brasov

Trimis: Dum Feb 11, 2007 2:39 pm    Titlul subiectului:  

Buna Ziua !

Problema sesizata in topic nu cred ca este in functionarea modelului AJAX (asa cum cred ca ai inteles weedkid), ci de ce nu se afiseaza alert-ul acela odata ce continutul a fost incarcat, in acest caz solutia ar fi sa manipulezi cu DOM structura HTML si sa creezi un nod SCRIPT.

O zi buna !
Sus  
boo



Data înscrierii: 24/Mar/2004
Mesaje: 223
Locație: Ploiesti

Trimis: Dum Feb 11, 2007 2:41 pm    Titlul subiectului:  

Citat: in acest caz solutia ar fi sa manipulezi cu DOM structura HTML si sa creezi un nod SCRIPT
...ok, imi poti arata un exemplu, un site, un tutorial, ceva? :lol:
Sus  
tuwyx



Data înscrierii: 13/Iul/2005
Mesaje: 55
Locație: Brasov

Trimis: Dum Feb 11, 2007 3:08 pm    Titlul subiectului:  

Nu-mi mai aduc aminte pe unde am vazut... eventual vb pe YIM si te ajut cu niste documentatie.

O zi buna !
Sus  
xmart2k



Data înscrierii: 08/Dec/2004
Mesaje: 30

Trimis: Mie Aug 08, 2007 7:24 pm    Titlul subiectului:  

ati rezolvat cumva kestia asta?
as vrea si eu un exemplu,m-am ciocnit de acelas lucru :(
Sus  
boo



Data înscrierii: 24/Mar/2004
Mesaje: 223
Locație: Ploiesti

Trimis: Mie Aug 08, 2007 8:16 pm    Titlul subiectului:  

Da, cu functia eval(). La momentul respectiv asa am rezolvat, dupa nu m-a mai interesat pentru ca nu m-am mai lovit de situatia asta.
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 700
Locație: Drobeta Turnu Severin

Trimis: Dum Oct 07, 2007 8:19 pm    Titlul subiectului:  

Nu stiu daca merge da' pare logic: functia din sistemul AJAX care actualizeaza div-ul, daca "stie" ca a primit un script si nu alt text, ea trebuie sa-l execute cu eval() sau sa-l apeleze daca scriptul primit contine o functie js.
N-am incercat dar nu vad de ce n-ar merge!
Sus  
Copyright



Data înscrierii: 17/Dec/2006
Mesaje: 860
Locație: Bucuresti

Trimis: Dum Oct 07, 2007 9:09 pm    Titlul subiectului:  

boo a scris: Da, cu functia eval(). La momentul respectiv asa am rezolvat, dupa nu m-a mai interesat pentru ca nu m-am mai lovit de situatia asta.

// Incercati asa pentru a executa un bloc script: Cod: var scripts  = '<script type="text/javascript">window.onload=function(){alert("un text")}'+'</'+'script>';

eval.call(window, scripts); // sau asa daca textul contine doar o singura functie: Cod: var fn = 'function(){alert("un text")}';
eval('('+fn+')()');


Later.
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 700
Locație: Drobeta Turnu Severin

Trimis: Mie Noi 12, 2008 12:34 am    Titlul subiectului:  

Am o intrebare si o pun aici ca-i pe aceeasi tema.
Cod:
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
   inwork=false;
   var textReturn = xmlHttp.responseText;
   document.getElementById(ele).innerHTML=textReturn;
   if (textReturn.indexOf('autorun')>0) eval(document.getElementById('autorun').value);
}

Este o portiune din functia AJAX care primeste raspunsul de la server, il insereaza in div-ul "ele" si daca in textul primit exista un element cu id-ul 'autorun' executa codul care se gaseste in atributul 'value' al acestuia
xmlHttp.responseText este :
Cod:
<div class="o_clasa">Continut</div>
<input type="hidden" id="autorun" value="alert('Merge!');" />

Treaba merge si pe FF si pe IE si m-am bucurat ca am gasit solutia asta de a trimite cod HTML si JavaScript care sa se autoexecute dar pe amandoua (IE/FF) se pierd proprietatile date de "o_clasa". Daca nu trimit campul "autorun" proprietatile CSS sunt corecte daca-l trimit nu mai functioneaza left si top
Cod:
.o_clasa {
position: absolute;
left:100px;
top:100px;
...
}

Stie cineva, va rog !
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1912
Locație: Sibiu

Trimis: Mie Noi 12, 2008 9:33 am    Titlul subiectului:  

Deci sa inteleg: daca se ruleaza eval-ul ala, div-ul cu class='o_clasa' pierde toate proprietatile de CSS? Ne dai si un link sa vedem chestia asta live? Poate reuseste firebug sa imi spuna cate ceva...
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 700
Locație: Drobeta Turnu Severin

Trimis: Mie Noi 12, 2008 7:01 pm    Titlul subiectului:  

Nu toate proprietatile le pierde, numai left si top, se pozitioneaza in coldul stanga-sus si eu voiam pe la 100,100px.

Deocamdata lucrez local. Un amic vrea sa emita procese verbale de executie a unor lucrari pe care le executa la clienti. Si ca sa nu se duca pana la firma sa faca actele le vrea pe net ca-s la indemana. Nu-i laborioasa treaba dar sunt la inceput si merge incet mai ales ca m-am incapatanat sa nu folosesc un framework. De indata ce va fi undeva pusa anunt. ms
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 700
Locație: Drobeta Turnu Severin

Trimis: Mie Noi 12, 2008 8:02 pm    Titlul subiectului:  

Scuze ca postez tot eu, dar am gasit explicatia. Eram pe o pista gresita. Codul de executat nu era era alert('..'), era Drag(objTitle, ObjContainter) si chestia asta reseta offsetLeft si offsetTop. Ma bucur ca merge treaba cu transmiterea unei functii prin campul hidden. Stiti o alta cale mai eleganta ?
Asa trebuie sa bat in cuie id-ul 'autorun', parca nu da bine constante in functia ajax.
Sus  
kleampa



Data înscrierii: 10/Iul/2005
Mesaje: 2168
Locație: Bucuresti

Trimis: Mie Noi 12, 2008 9:16 pm    Titlul subiectului:  

jquery, prototype si cred ca toate librariile js mai cunoscute au pentru obiectul ajax niste chestii numite onStart, onStop si succes in care pot sa faci orice fel de chestii in diferite momente ale requestului
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> AJAX
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community