我正在为我的网站建立一个聊天室。我正在使用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%\">"*/;
}
}
?>
答案 0 :(得分:1)
如果你的php文件中有多个函数,你可以这样做:
您可以使用jquery中的load函数POST参数。所以你可以试试这个:
$('#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%\">"*/;
}
?>
答案 1 :(得分:0)
你没有。
您需要将所有流控制放入主机网页,因为您无法从AJAX加载外部程序流。
更新后,看起来你正试图调用PHP,而不是JavaScript。
答案很简单:想法是你的页面将呈现数据,所以只需将show_messages()放在页面的末尾 - 或者,真的......只需完全删除函数包装器。
答案 2 :(得分:0)
在'show_messages_public.php'页面中,我有一个名为'show_messages()'的函数,我如何从AJAX和Jquery中调用这个函数?
你不会。您的PHP页面应该根据通过GET或POST请求传递的参数来返回数据。例如,您可以发送以下参数:
像这样:
$('#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();
答案 3 :(得分:0)
您没有通过AJAX调用函数,只是执行远程地址(URL)然后使用响应