2012-03-28 85 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