onload没有调用我的JS函数?

时间:2011-08-18 11:24:07

标签: php html ajax

我添加了这个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>

任何人都可以告诉我为什么第二和第三功能的警报不执行?第一个执行

感谢

1 个答案:

答案 0 :(得分:1)

在getNewMessage中

你错过了()for 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);
}