Php 如何每5秒刷新一次div

Php 如何每5秒刷新一次div,php,jquery,ajax,Php,Jquery,Ajax,我正在为我的网站建立一个聊天室。我使用php和mysql来显示和存储消息。我尝试使用Jquery和AJAX每5秒刷新一次页面。我以前从未使用过Jquery或AJAX。这是我的Jquery和AJAX代码 <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript">

我正在为我的网站建立一个聊天室。我使用php和mysql来显示和存储消息。我尝试使用Jquery和AJAX每5秒刷新一次页面。我以前从未使用过Jquery或AJAX。这是我的Jquery和AJAX代码

                    <script type="text/javascript" src="jquery.js"></script>

                    <script type="text/javascript">                             
                    var auto_refresh = setInterval(
                    function(){
                    $('#message_display').load('show_messages_public.php');
                            }, 5000);
                    </script>

var auto_refresh=setInterval(
函数(){
$(“#messages_display”).load('show_messages_public.php');
}, 5000);
在“show_messages_public.php”页面中,我有一个名为“show_messages()”的函数,我如何从AJAX和Jquery调用这个函数

<?php
session_start();

function show_messages()
{
$mysql_host = "******";
$mysql_database = "*******";
$mysql_user = "*****";
$mysql_password = "*****";

$link= mysql_connect($mysql_host, $mysql_user, $mysql_password);

if (!$link) {
    die('could not connect:' . mysql_error());
}

$db_selected= mysql_select_db($mysql_database);

if (!$db_selected) {
    die('can\'t use' . $mysql_database . ':' . mysql_error());
}

$query= "SELECT * FROM public_chat ORDER BY time DESC LIMIT 2";
$result= mysql_query($query) or die(mysql_error());
while($row= mysql_fetch_array ($result)) {
    echo '<br/><font color="black">' .$row['time'] . "<br>" . '<b><big>' . '<font color="black">' . $row['user'] . ':' . '</big></b>' . " <br> " . $row['message'] .'</font>'; 
    echo "<br/><hr width=\"95%\"<br/>"/*"<hr width=\"90%\">"*/;
    }
}
?>

你没有

您需要将所有的流控制放在主机网页中,因为您无法从AJAX加载外部程序流


更新之后,看起来您正在尝试调用PHP,而不是JavaScript

答案很简单:这个想法是您的页面将呈现数据,所以只需将show_messages()放在页面的末尾——或者,实际上。。只需完全移除函数包装器

在“show_messages_public.php”页面中,我有一个名为“show_messages()”的函数,我如何从AJAX和Jquery调用这个函数

<?php
session_start();

function show_messages()
{
$mysql_host = "******";
$mysql_database = "*******";
$mysql_user = "*****";
$mysql_password = "*****";

$link= mysql_connect($mysql_host, $mysql_user, $mysql_password);

if (!$link) {
    die('could not connect:' . mysql_error());
}

$db_selected= mysql_select_db($mysql_database);

if (!$db_selected) {
    die('can\'t use' . $mysql_database . ':' . mysql_error());
}

$query= "SELECT * FROM public_chat ORDER BY time DESC LIMIT 2";
$result= mysql_query($query) or die(mysql_error());
while($row= mysql_fetch_array ($result)) {
    echo '<br/><font color="black">' .$row['time'] . "<br>" . '<b><big>' . '<font color="black">' . $row['user'] . ':' . '</big></b>' . " <br> " . $row['message'] .'</font>'; 
    echo "<br/><hr width=\"95%\"<br/>"/*"<hr width=\"90%\">"*/;
    }
}
?>
你不会的。PHP页面应该根据通过GET或POST请求传递的参数返回数据。例如,您可以发送以下参数:

  • startInt=1
  • 重复次数=5
  • 递增递增=3
像这样:

 $('#message_display').load('show_messages_public.php?startInt=1&repeatTimes=5&incrementIncrease=3');
然后在PHP中,您可以将结果以纯文本形式返回,如下所示:

<?
    var startInt = $_GET['startInt'];
    var repeatTimes = $_GET['repeatTimes'];
    var incrementIncrease = $_GET['incrementIncrease'];

    var str = "";
    for (var i = startInt; i < repeatTimes * incrementIncrease + startInt; i += incrementIncrease) {
         str .= i."|";
    }

    echo str;
?>
然后在PHP中:

 if ($_GET['callfunc'] == "true")
     show_messages();

您不是通过AJAX调用函数,而是执行远程地址(URL),然后处理响应

当php文件中有多个函数时,您可以执行以下操作:

您可以使用jquery中的load函数发布参数。所以你可以试试这个:

$('#message_display').load('show_messages_public.php', {showmsg: 'public'});
在php中:

switch($_POST['showmsg']) {
    case 'public':
        show_messages();
        break;
}
如果没有多个函数,只需调用没有函数的代码:

<?php
session_start();

$mysql_host = "******";
$mysql_database = "*******";
$mysql_user = "*****";
$mysql_password = "*****";

$link= mysql_connect($mysql_host, $mysql_user, $mysql_password);

if (!$link) {
    die('could not connect:' . mysql_error());
}

$db_selected= mysql_select_db($mysql_database);

if (!$db_selected) {
    die('can\'t use' . $mysql_database . ':' . mysql_error());
}

$query= "SELECT * FROM public_chat ORDER BY time DESC LIMIT 2";
$result= mysql_query($query) or die(mysql_error());
while($row= mysql_fetch_array ($result)) {
    echo '<br/><font color="black">' .$row['time'] . "<br>" . '<b><big>' . '<font color="black">' . $row['user'] . ':' . '</big></b>' . " <br> " . $row['message'] .'</font>'; 
    echo "<br/><hr width=\"95%\"<br/>"/*"<hr width=\"90%\">"*/;
}
?>


读取
设置超时
函数以每X(毫秒)执行一次操作seconds@Worm如果你可以参考一篇类似的文章,那么
显示消息\u public.php
代码看起来如何:@Breezer我添加了我的PHP代码。我在html页面中使用了函数来显示消息。在我的html页面中,我需要这样的函数。然后尝试方法1(使用post)hmm,如果您尝试使用
if(isset($\u post))show\u messages();
而不是开关(在函数外部)。然后在设置post时调用该函数。