2012-03-28 118 views
0

好的,在我的一個網站上,我有一個「新聞」邊欄,用於顯示來自表格的事件。如何在AJAX調用後執行Javascript執行

我最近開始使用AJAX自行更新表格。

AJAX大部分工作,除了一件事...每個事件的時間都沒有工作。我使用JS來顯示時間。

下面是一個事件的例子...

<div class="event"> 
<p>The event text</p> 
<script type="text/javascript"> 

//The timestamp variable below is fed by a PHP script from a big table of events. 
//Also keep in mind there are many events on the page! 
document.write(get_time(1332900003)); 
</script> 

</div> 

所以問題是,AJAX抓起桌上的HTML,吐不出來,但後來沒有執行GET_TIME功能:(這工作得很好使用AJAX之前,但不是現在。

所以我怎麼可以讓JavaScript的執行它是由AJAX調用後?我用這AJAX腳本...

function updateNews() 
{ 
var xmlhttp; 

if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 


else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 


xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    if (document.getElementById("news").innerHTML != xmlhttp.responseText) 
    { 
    document.getElementById("news").innerHTML=xmlhttp.responseText; 
    } 
    } 
    } 


xmlhttp.open("GET","display2.php",true); 
xmlhttp.send(); 
} 
updateNews(); 
setInterval("updateNews()", 5000); 

感謝他!LP :)

+1

忘記這個庫,改用jQuery。你的生活會容易得多。 – 2012-03-28 03:57:26

+0

謝謝... jquery雖然是一個巨大的圖書館!任何想法,我應該開始模擬這樣的事情......? – hellohellosharp 2012-03-28 04:02:09

回答

0

嘗試修改你的HTML如下:

<div class="event"> 
    <p>The event text</p> 
    <div id="showtime_xx"></div> 
    <script type="text/javascript"> 
     document.getElementById("showtime_xx").innerHTML = get_time(1332900003); 
    </script> 
</div> 

document.write使事情變得最糟糕的時候。上面的代碼將確保它始終有效。

+0

謝謝你看起來像這樣可能會工作:)我會測試它。 – hellohellosharp 2012-03-28 04:11:56

+0

還請確保用唯一編號替換'xx',這樣就不會有任何ID衝突。 – Epuri 2012-03-28 04:16:04

+0

不幸的是,JavaScript仍然沒有執行:(我試過document.getElementById(「showtime_xx」)。innerHTML =「test」;只是可以肯定的,它沒有工作 – hellohellosharp 2012-03-28 04:30:37

0

使用jQuery而不是如上評論,你的生活會更容易

$.post(url, {keyy: value}, function(){ 
    // this function will be called after ajax call 
}) 
+0

好的,謝謝......但我仍然不確定這能幫助我......(對不起,我在JS非常不好意思)。有大約30個事件顯示,所以我需要功能去幾次?而且,我的get_time函數需要一個timestamp參數,它由PHP從事件表中給出。 – hellohellosharp 2012-03-28 04:09:05

+0

也許你可以試試這個,'document.getElementById(「news」)。innerHTML = xmlhttp.responseText + get_time(xxxxxxx);'在你的代碼中,檢查innerHTML後,如果不是與ajax響應相同。 – Lee 2012-03-28 05:04:51