Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用动态数据自动刷新div_Php_Jquery_Ajax - Fatal编程技术网

Php 使用动态数据自动刷新div

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='

我有一个部门。我想每5秒重新加载一次这个部分。我该怎么做呢。这是我的密码:

<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