代码之家  ›  专栏  ›  技术社区  ›  Sam Johannes Rudolph

Ajax Div检索每60秒

  •  0
  • Sam Johannes Rudolph  · 技术社区  · 14 年前

    我想做的是检索一个PHP文件的内容,并每隔60秒将其插入到一个DIV中,基本上是刷新动态DIV。到目前为止,我已经想出了以下代码,但它似乎不起作用。代码就是这样的,除了MySQL登录之外,没有什么额外的。

    PHP抓取:

    <?php                   
    $time = date("m/d/Y h:i:s a", time());
                    mysql_query("UPDATE djs SET requesttime='{$time}' WHERE username='{$djs['username']}'")
                    or die(mysql_error()); 
    
                    $request_db = mysql_query("SELECT * FROM requests
                    WHERE haveplayed='0'") or die(mysql_error());  
                    echo "<table style=\"border:1px solid;width:99%;margin-left:auto;margin-right:auto;\" border=\"1\">";
                    echo "<tr><th>Title</th><th>Artist</th><th>Dedicated To...</th></tr>";
                    while($request = mysql_fetch_array( $request_db )) {
                        echo "<tr><td style=\"width:33%;padding:1px;\">";
                        echo $request['SongName'];  
                        echo "</td><td style=\"width:33%;\">";
                        echo $request['Artist'];    
                        echo "</td><td style=\"width:33%;\">";
                        echo $request['DedicatedTo'];
                        echo "</td></tr>";  
                    }
                    echo "</table>";
                ?>
    

    最初的PHP代码是相同的,包含在一个带有id属性“ajax_table”的DIV中。

    javascript是:

    // JavaScript Document
    var xmlHttp_moniter
    
    function moniter()
    {
        xmlHttp_moniter = GetXmlHttpObject_parcel()
    if(xmlHttp_moniter == null)
    {
        alert("browser does not support HTTP Request")
        return
    }
    var url="ajax_table.php?random=" + Math.random()
    xmlHttp_moniter.onreadystatechange = stateChanged
    xmlHttp_moniter.open("GET",url,true)
    xmlHttp_moniter.send(null)
    
    }
    
    function stateChanged()
    {
    if(xmlHttp_moniter.readyState==4 || xmlHttp_moniter.readyState == "complete")
    {
        document.getElementById("ajax_table").innerHTML = xmlHttp_moniter.responseText
        setTimeout('ajax_table()',60000);
    }
    }
    
    function GetXmlHttpObject_parcel()
    {
    var xmlHttp_moniter=null;
    try
    {
        xmlHttp_moniter=new XMLHttpRequest();
    }
    catch (e)
         {
             //Internet Explorer
             try
              {
                  xmlHttp_moniter=new ActiveXObject("Msxml2.XMLHTTP");
              }
             catch (e)
              {
              xmlHttp_moniter=new ActiveXObject("Microsoft.XMLHTTP");
              }
         }
    return xmlHttp_moniter;
    }
    

    在请求另一个PHP页面的页面上。

    3 回复  |  直到 13 年前
        1
  •  3
  •   Karl    14 年前

    如何使用jquery这样的框架来简化您的javascript:

    $(function() {
    
      setInterval(function() {
        $.get('ajax_table.php', function(data) {
          $('#ajax_table').html(data);
        });
      }, 60 * 1000);
    
    });
    
        2
  •  0
  •   Josef Adamcik    14 年前

    首先,没有调用JS函数ajax_table()。

    setTimeout('ajax_table()',60000);
    

    在您的代码中。

    在第二点,您确定第一次在某处调用moniter()函数吗?

        3
  •  0
  •   yogi46    13 年前

    尝试一下,您可以检索一个PHP文件的内容,并每隔60秒将其插入DIV中。 http://www.webtrickss.com/ajax/how-to-refresh-a-div-using-ajax/