简体   繁体   English

在HTML元素中显示POST数据

[英]Display POST data in HTML element

I need some example to display POST data inside HTML DIV element. 我需要一些示例来在HTML DIV元素中显示POST数据。 Like this: Beeceptor 像这样: Beeceptor

I make an example using PHP and jQuery. 我使用PHP和jQuery做一个例子。

It works fine but I don't know if there a better solution instead of using SESSIONS and interval function? 它工作正常,但我不知道是否有更好的解决方案而不是使用SESSIONS和interval函数?

The POST data is made by using an external program (not by jQuery itself). POST数据是通过使用外部程序(而不是jQuery本身)生成的。

PHP PHP

session_id('13245');
session_start();

$session_id = session_id();

if($data['payload'] !== null)
{
    $_SESSION['payload'] = $data['payload'];
    $_SESSION['timestamp'] = microtime();
}
else
{
    $_SESSION['payload'] = $_SESSION['payload'];
    $_SESSION['timestamp'] = $_SESSION['timestamp'];
}   

echo json_encode(array('timestamp' => $_SESSION['timestamp'], 'payload' => $_SESSION['payload']));
?>

jQuery jQuery的

$(document).ready(function () {
                var oldTimeStamp = 0;
                setInterval(function()
                { 
                    $.ajax({
                      type:"post",
                      url:"post.php",
                      datatype:"json",
                      success:function(data)
                      {
                            var obj = jQuery.parseJSON(data)
                            if(oldTimeStamp != obj.timestamp)
                            {
                                oldTimeStamp = obj.timestamp;
                                $('#displayData').append('timestamp: ' + obj.timestamp);
                                $('#displayData').append(' rawPayload: ' + obj.payload);
                                $('#displayData').append('<br />');
                            }

                      }
                    });
                }, 1000);//time in milliseconds 
            });

Any help will be greatly appreciated. 任何帮助将不胜感激。

you can go for "then()" or "done()", immediate after finishing ajax call. 您可以在完成Ajax调用后立即使用“ then()”或“ done()”。 here is the sample: 这是示例:

    $.ajax({
        type:"post",
        url:"post.php",
        datatype:"json",
        success:function(data)
            {...}
    }).then(function (data){
        var obj = jQuery.parseJSON(data)
        if(oldTimeStamp != obj.timestamp)
        {
             oldTimeStamp = obj.timestamp;
             $('#displayData').append('timestamp: ' + obj.timestamp);
             $('#displayData').append(' rawPayload: ' + obj.payload);
             $('#displayData').append('<br />');
         }

}); });

You are trying to make a real-time application such as chatting and real-time visualizations. 您正在尝试制作一个实时应用程序,例如聊天和实时可视化。 In order to achive this I suggest you to write with NodeJs SOCKET.IO 为了达到这个目的,我建议您使用NodeJs SOCKET.IO编写

If you use PHP it will make your server lode more harder than JavaScript programs like socket.io. 如果使用PHP,它将使服务器的性能比socket.io等JavaScript程序更难。

Your Question: It works fine but I don't know if there a better solution instead of using SESSIONS and interval function? 您的问题:效果很好,但是我不知道是否有更好的解决方案而不是使用SESSIONS和interval函数?

Answer: Definitely it's a bad practice which trigger the server every seconds even there are no new updates. 答:绝对不明智的做法是,即使没有新更新,它也会每秒触发一次服务器。 Let's assume you have 100 users online at the same time so your server will be called 100 times every second which is really a more load to the server. 假设您同时有100个用户在线,那么服务器每秒将被调用100次,这实际上是给服务器增加了负载。

Example: https://socket.io/get-started/chat 示例: https //socket.io/get-started/chat

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

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