|
Author
|
Topic: Ajax ile getirilen sayfadaki javasctipt çalışmıyor! (Read 1141 times)
|
zombie
Global Moderatör
Offline
Posts: 940
|
mrb arkadaşlar; bir sayfaya ajax ile başka bir sayfanın içeriğini getiriyorum. ama getirdiğim içerikteki javascript nedense çalışmıyor. normalde çağırdığım sayfayı tek başına açtığımda sorun yok, ama aynı sayfayı ajax ile çağırınca javascript çalışmıyor. kodları ekliyorum; bu ana sayfa, yani ajax ile bu sayfanın içine div1.php adlı sayfayı çağırıyorum. <script> function createRequestObject() { var conn; var browser = navigator.appName; if(browser == "Microsoft Internet Explorer") { conn = new ActiveXObject("Microsoft.XMLHTTP"); } else { conn = new XMLHttpRequest(); } return conn; } var http = createRequestObject(); function sayfa(action) { http.open('get', 'div1.php?act='+action); http.onreadystatechange = handleResponse; http.send(null); }
function handleResponse() { document.getElementById('pages').innerHTML="<br><center>işlem yapılıyor</center><br>"; if(http.readyState == 4) { var response = http.responseText; document.getElementById('pages').innerHTML = http.responseText; } } </script> <div id="pages"> <table width="6%" border="1"> <tr> <td><input name="testButton" type="button" id="testButton" style="font-size:12; color:red; background-color:#D6E2F5; border:hidden; border-width:thin" value="Sayfa" onClick="sayfa('index')"></td> </tr> </table> </div> bu da div.php <?php /* if(!isset($_GET['act'])) { die('giriş yok'); }*/ ?> <script> var saniye = 5; function ferheng() { if(saniye>0) { document.getElementById("zaman").innerHTML ="<b><font color=green> " + saniye + " </b></font>"; saniye = saniye - 1; setTimeout("ferheng()", 1000) } else { document.getElementById("zaman").innerHTML = "<font color=red>Süreniz Doldu!</font>"; } } </script> </head> <body onload="javasctipt:ferheng();"> Zaman: <div id="zaman"></div> sorun ne olabilir acaba?
|
|
|
|
|
Logged
|
|
|
|
|
engin
|
alert ile ajax request'den sonra cevap geliyor mu ve beklenildiği şekilde mi öğrenir misin? bunun için http debugger'da kullanabilirsin
|
|
|
|
|
Logged
|
Engin Dumlu engin ~ turk-php.com achilles ~ member.turk-php.com
|
|
|
zombie
Global Moderatör
Offline
Posts: 940
|
evet request ten cevap alabiliyorum, javascript in çalışmadığı sayfada herhangi birşey yazınca sonuç alınıyor, zaten yukarıda eklediğim haliyle almak istediğim sonuç "Zaman: 7" gibi birşey, buradan "Zaman:" geliyor ama 7 (bu değer javascript sonucu oluşuyor.) gelmiyor. şu an debug yapma olanağım da yok maalesef.
|
|
|
|
|
Logged
|
|
|
|
|
engin
|
div.php çıktısında body ve head etiketlerinin ne işi var? gelen veri iframe ile alınsa body'de onload fonksiyonu çalışacaktır.. ancak sen xmlhttprequest'i kullanmışsın innerHTML ile script içeriğini eklediğinde ordaki javascript kodları zaten çalışacaktır ayrıca "Zaman:" diye gelmesi çok normal değil mi? javascript ile yapmıyorsan div.php'de "zaman"ın karşısına veri yazan hiçbir kodun yok
|
|
|
|
|
Logged
|
Engin Dumlu engin ~ turk-php.com achilles ~ member.turk-php.com
|
|
|
zombie
Global Moderatör
Offline
Posts: 940
|
div.php de headin olması kodu etkilemiyor, yani request sonucu başka bir sayfanın içeriğini alabiliyor olmam lazım normal şartlarda. div.php de head, body taglarının varlığı pek etkilemedi, zaten body ferheng() adlı fonksiyonu onload ile başlatmak için kullandım. iframe ile yaparsam sorun yok zaten, ama bunu ajax ile yapmam lazım. "Zaman:" yazısı geliyor, bunu request sonucu veri alabildiğimi söylemek için ekledim. div.php de "Zaman:" bir satır altında 7 den 1 e doğru azalan bir sayaç olması gerekiyor, ama yok  ayrıca debug da yaptım ama hiçbir hata almadım, debugun ikinci adımında yani request sonucu gelen veriyi normal html sayfası olarak deniyorum oluyor, ama bunu request sonucu ilk sayfada almaya çalışınca sonuç yok maalesefff.
|
|
|
|
|
Logged
|
|
|
|
zombie
Global Moderatör
Offline
Posts: 940
|
sanırım request sonucu veri almaya çalıştığım sayfada ne tür bir javascript olursa olsun çalışmıyor. <script> document.write ("herhangi"); </script> sayfada bu kod olsa bile sonuç yok, ama sayfaya herhangi yazınca çalışıyor. burdan request yaptığım sayfada javascript çalıştıramayacağım anlamı çıkıyor:) saçma 
|
|
|
|
|
Logged
|
|
|
|
|
engin
|
fonksiyonu tetikleme yöntemin yanlış gibi görünüyor kodun çalıştığı adresi gönderirsen debug yapıp nedenini yazabilirim
|
|
|
|
|
Logged
|
Engin Dumlu engin ~ turk-php.com achilles ~ member.turk-php.com
|
|
|
zombie
Global Moderatör
Offline
Posts: 940
|
kodu online bir yerde kullanmıyorum henüz. sorun veri almaya çalıştığım sayfadaki javascriptte oluyor, o sayfada herhangi başka bir yazı olunca sonuç var (birinci sayfadaki istek kesinlikle gönderiliyor.), ama print yapan javascript kodu bile sonuç vermiyor. ilginiz için teşekkürler.
|
|
|
|
|
Logged
|
|
|
|
|
engin
|
http://www.e-php.net/zombie/sunucudan javascript kodu alıp çalıştırmanın çeşitli yöntemleri var tarayıcılar javascript ile işlem yaparken şaşırtıcı davranabiliyor
|
|
|
|
|
Logged
|
Engin Dumlu engin ~ turk-php.com achilles ~ member.turk-php.com
|
|
|
zombie
Global Moderatör
Offline
Posts: 940
|
çok doğru. eklediğiniz kod çalışıyor, bi inceleyeyim. vaktinizi ayırdığınız için çok teşekkürler.
|
|
|
|
|
Logged
|
|
|
|
|
 |