2011-08-18 72 views
0

我加入这个JS代码:onload不能调用我的JS函数?

<script language="JavaScript" type="text/JavaScript"> 
    var receiveReq = getXmlHttpRequestObject(); 
    var mTimer; 
    var url = "www-rainbowcode-net/apps_dev.php/messagebox/list"; 

    function getXmlHttpRequestObject() 
    { 
     alert("in gethttprequest"); 
     if (window.XMLHttpRequest) 
     { 
      return new XMLHttpRequest(); 
     } 
     else if(window.ActiveXObject) 
     { 
      return new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     else 
     { 
      //document.getElementById('p_status').innerHTML = 'Status: Cound not create XmlHttpRequest Object.'; 
     } 
    } 

    function getNewMessage() 
    { 
     if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
     {   
      alert("state is" + receiveReq.readyState); 
      //var params = "name" + name + "&" + "comment=" + comment; 
      receiveReq.open("POST", url, true); 
      receiveReq.onreadystatechange = processReqChange; 
      receiveReq.send(null); 
     } 
    } 

    function processReqChange() 
    { 
     // only if req shows "loaded" 
     if (receiveReq.status == 200) 
     { 
      alert("processed" + receiveReq.responseText); 
      document.getElementById("message_area").innerHTML = receiveReq.responseText; 
     } 
     else 
     { 
      alert("There was a problem retrieving the XML data:\n" + 
      receiveReq.statusText); 
     } 
     mTimer = setTimeout('getNewMessage();',2000); 
    }   
</script> 

然后我有我的HTML用PHP混合

<body onload = "return getNewMessage();"> 
    <table width='96%' border='0'> 
     <?php 
     $cursor = $pager->getFirstIndice(); 
     foreach ($pager->getResults() as $msg) 
     { 
      $has_freechat = false; 
      //changed id to withid here 
     $freechat_req_link="profiles/confirmfreechat?withid=".$msg->getRcProfileTableRelatedByProfileIdFrom()->getId();            
$freechat_req_link=link_to('Freechat',$freechat_req_link,'class=link_small_dark'); 

     $cc = sizeof ($fc_records); 
     for($i = 0; $i < $cc; $i++) 
     { 
    if($fc_records[$i]->getProfileIdWith() == $msg->getProfileIdFrom()) 
    {  
     $has_freechat = true;  
     break; 
    } 
     } 
     $unique_code_from = $msg->getRcProfileTableRelatedByProfileIdFrom()->getUniqueCode(); 
     $block_url = link_to('Block User',"blocklist/block?unqiue_code=$unique_code_from",'class=link_medium_blue'); 
      echo "<div id = 'message_area'>"; 
     echo "<tr>"; 
      $date = add_date($msg->getCreatedAt(),$hr=2); 
     echo "<td class='td_show_contact_item' align='left'>".$date."</td>"; 
      $opened_once = $msg->getOpenedOnce(); 
      if($opened_once >= 1) 
      { 
       echo "<td class='td_show_contact_item' align='left'>".link_to($msg->getSubject(), 'messagebox/read?cursor='.$cursor,'class=link_medium_blue')."</td>"; 
      }  
      else 
      { ?> 
      <td align='left'> 
      <a href="<?php echo url_for('messagebox/read?cursor=').$cursor ?>" style='color:#ff0000 !important' class='spn_small_red_rbc'><?php echo $msg->getSubject();?>    </a>   
      </td>  
      <?php 
     } 
echo "<td class='td_show_contact_item' align='left'>".$unique_code_from." ($block_url)</td>"; 
    echo "</tr>"; 
    echo "</div>"; 
    ++$cursor; 
} 
</table> 

有谁能够告诉我为什么我在第二和第三功能警报不执行呢?一个在第一执行

感谢

+0

不使用return关键字 –

+0

删除,并添加行MKK建议,但无明显差异??? –

回答

1

在getNewMessage你错过了()的processReqChange

更新:

function getNewMessage() 
{ 
    if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
    {   
     alert("state is" + receiveReq.readyState); 
     //var params = "name" + name + "&" + "comment=" + comment; 
     receiveReq.open("POST", url, true); 
     receiveReq.onreadystatechange = processReqChange; 
     receiveReq.send(null); 
    } 
    mTimer = setTimeout("getNewMessage()", 5000); 
} 
+0

window.onload?但页面必须每隔2000秒刷新一次,因为当两个人在网站上“聊天”时,新消息可能会持续不断。当我在页面上时,新消息必须显示为新到达/ 我移动/添加了您的行,但仍然没有做另外两个警报? –

+0

@processReqChange()中缺少()的@Helloise。我更新了我的回答 – mkk

+0

我现在称之为: setTimeout(function() { window.location.reload(1); },5000); 但现在页面每5秒闪烁一次!不要那个..任何其他方式请帮助?非常感谢 –