繁体   English   中英

如何每5秒刷新一次div

[英]How to refresh a div every 5 seconds

我正在为我的网站创建聊天室。 我正在使用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>

在“ 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文件中有多个函数,则可以执行以下操作:

您可以使用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%\">"*/;
}
?>

你不知道

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


更新之后,您似乎正在尝试调用PHP,而不是JavaScript。

答案很简单:想法是您的页面将呈现数据,因此只需将show_messages()放在页面的末尾-或者,实际上,只需完全删除函数包装器即可。

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

你不会的 您的PHP页面应基于通过GET或POST请求传递的参数返回数据。 例如,您可以发送以下参数:

  • startInt = 1
  • repeatTimes = 5
  • crementIncrease = 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;
?>

这将返回以下内容:

1 | 4 | 7 | 10 | 13 | 16 |

我知道这并不能真正解决您的问题,但似乎您需要学习AJAX的基础知识。


实际解决您的问题:

您可以尝试以下代码:

 setInterval(function() { $('#message_display').load('show_messages_public.php?callfunc=true'); }, 5000); 

然后在您的PHP中:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM