Php 使用动态数据自动刷新div
我有一个部门。我想每5秒重新加载一次这个部分。我该怎么做呢。这是我的密码:Php 使用动态数据自动刷新div,php,jquery,ajax,Php,Jquery,Ajax,我有一个部门。我想每5秒重新加载一次这个部分。我该怎么做呢。这是我的密码: <script> $("#send_parent_general_chat").submit(function() { var rec = $("#data").val(); var msg = $("#msg").val(); var dataString = 'rec='+ rec + '&msg='
<script>
$("#send_parent_general_chat").submit(function()
{
var rec = $("#data").val();
var msg = $("#msg").val();
var dataString = 'rec='+ rec + '&msg='+ msg;
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>" + "Client/send_general_parent_chat_msg/<?php echo $per_job->id;?>",
data: dataString,
cache: false,
success: function(result){
$('#display_general_msg').html(result);
$('#send_parent_general_chat')[0].reset(); //form reset
}
});
return false;
});
</script>
<script>
$(document).ready(function(){
setInterval(function(){
// alert("===111==");
$("#display_general_msg").load('<?php echo base_url(); ?>" + "Client/refresh_general_parent_chat_msg/<?php echo $per_job->id;?>')
}, 5000);
});
</script>
$(“#发送#父#常规#聊天”).submit(函数()
{
var rec=$(“#数据”).val();
var msg=$(“#msg”).val();
var dataString='rec='+rec+'&msg='+msg;
$.ajax({
类型:“POST”,
url:“+”客户端/发送\常规\家长\聊天\消息/”,
数据:dataString,
cache:false,
成功:功能(结果){
$('#display_general_msg').html(结果);
$(“#发送_父项_常规_聊天”)[0].reset();//表单重置
}
});
返回false;
});
$(文档).ready(函数(){
setInterval(函数(){
//警报(“==111==”);
$(“#display_general_msg”).load(“+”Client/refresh_general_parent_chat_msg/”)
}, 5000);
});
我又创建了一个控制器,用于刷新div。我使用了时间间隔函数,但它没有加载,它显示了此错误:
禁止访问!
您没有访问请求对象的权限。它受读保护,或者服务器不可读。
如果您认为这是服务器错误,请联系网站管理员。
错误403
我只需要刷新div内容,而不是整个页面。
如何实现这一点?您可以使用:
setTimeout(function()
{
Your_Function(); //this will send request again and again;
}, 5000);
用函数名替换函数
希望这会有帮助 您也可以尝试以下方法:
setInterval(function(){
loadlink() // this will run after every 5 seconds
}, 5000);
setInterval方法将比setTimeout方法更精确
//或
下面是一个使用php websockets每5秒钟更新一次内容的示例。这是一个简单的示例,但您可以使用它进行修改,以满足您的应用程序需要。您不需要客户端的超时功能,这里我们使用服务器
sleep
安装
客户端代码
<!DOCTYPE HTML>
<html>
<head>
<script type = "text/javascript">
function WebSocketTest() {
if ("WebSocket" in window) {
//alert("WebSocket is supported by your Browser!");
// Let us open a web socket
var ws = new WebSocket("ws://localhost:2346");
ws.onopen = function() {
// Web Socket is connected, send data using send()
ws.send("Message to send");
//alert("Message is sent...");
};
ws.onmessage = function (evt) {
var received_msg = evt.data;
//alert("Message is received..." + received_msg);
document.getElementById("demo").innerHTML = "Timestamp is updated every 5 sec " +received_msg;
};
ws.onclose = function() {
// websocket is closed.
alert("Connection is closed...");
};
} else {
// The browser doesn't support WebSocket
alert("WebSocket NOT supported by your Browser!");
}
}
</script>
</head>
<body>
<div id = "sse">
<a href = "javascript:WebSocketTest()">Run WebSocket</a>
</div>
<div id="demo" style="font-size: 64px; color: red;"></div>
</body>
</html>
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// Create a Websocket server
$ws_worker = new Worker("websocket://0.0.0.0:2346");
// 4 processes
$ws_worker->count = 4;
// Emitted when new connection come
$ws_worker->onConnect = function($connection)
{
echo "New connection\n";
};
// Emitted when data received
$ws_worker->onMessage = function($connection, $data)
{
// Send hello $data
while(true) {
$connection->send(time());
sleep(5); //Sleep for 5 seconds to send another message.
}
};
// Emitted when connection closed
$ws_worker->onClose = function($connection)
{
echo "Connection closed\n";
};
// Run worker
Worker::runAll();
这里index.php
是我们的后端文件名
只需启动服务并加载页面,您就可以看到时间戳每5秒更新一次,它来自服务器端。这是一个在本地机器上测试的工作示例。如果你需要任何其他帮助,试着告诉我
输出
我建议将WebSocket用于此类应用程序。它将为您的服务器和所有用户提供大量网络流量的安全保障。由于您的任务处理时间间隔较短,因此可能会占用大量CPU。我建议在这种情况下使用setTimeout而不是setInterval首先查看一下,通过将url放入浏览器来检查给定的url是否正常打开。使用WebSocket将是最好的方法,因为它与服务器具有持久连接。@JYoThI否也可以为具有设置超时。事实上,setTimeout对于CPU密集型任务和较短的间隔更为方便。我已经尝试过像这样的函数reload_div(){$(“#send_parent_general_chat”)。submit(function(){//data});}setTimeout(function(){reload_div();//这将一次又一次地发送请求;},5000);但它不起作用尝试以下操作:函数reload_div(){$(“#send_parent_general_chat”).submit(函数(){alert(“”})}setInterval(函数(){reload_div();},5000);仅当警报打印完毕后,在表单提交代码的结尾处删除返回false。
<!DOCTYPE HTML>
<html>
<head>
<script type = "text/javascript">
function WebSocketTest() {
if ("WebSocket" in window) {
//alert("WebSocket is supported by your Browser!");
// Let us open a web socket
var ws = new WebSocket("ws://localhost:2346");
ws.onopen = function() {
// Web Socket is connected, send data using send()
ws.send("Message to send");
//alert("Message is sent...");
};
ws.onmessage = function (evt) {
var received_msg = evt.data;
//alert("Message is received..." + received_msg);
document.getElementById("demo").innerHTML = "Timestamp is updated every 5 sec " +received_msg;
};
ws.onclose = function() {
// websocket is closed.
alert("Connection is closed...");
};
} else {
// The browser doesn't support WebSocket
alert("WebSocket NOT supported by your Browser!");
}
}
</script>
</head>
<body>
<div id = "sse">
<a href = "javascript:WebSocketTest()">Run WebSocket</a>
</div>
<div id="demo" style="font-size: 64px; color: red;"></div>
</body>
</html>
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// Create a Websocket server
$ws_worker = new Worker("websocket://0.0.0.0:2346");
// 4 processes
$ws_worker->count = 4;
// Emitted when new connection come
$ws_worker->onConnect = function($connection)
{
echo "New connection\n";
};
// Emitted when data received
$ws_worker->onMessage = function($connection, $data)
{
// Send hello $data
while(true) {
$connection->send(time());
sleep(5); //Sleep for 5 seconds to send another message.
}
};
// Emitted when connection closed
$ws_worker->onClose = function($connection)
{
echo "Connection closed\n";
};
// Run worker
Worker::runAll();
$php index.php start