我需要一些示例来在HTML DIV元素内显示POST数据。像这样:Beeceptor
我使用PHP和jQuery做一个例子。
它工作正常,但我不知道是否有更好的解决方案而不是使用SESSIONS和间隔函数?
POST数据是使用外部程序(而不是jQuery本身)制成的。
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
$(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
});
任何帮助将不胜感激。
答案 0 :(得分:0)
您可以在完成ajax调用后立即使用“ then()”或“ done()”。这是示例:
$.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 />');
}
});
答案 1 :(得分:0)
您正在尝试制作一个实时应用程序,例如聊天和实时可视化。为了实现这一点,我建议您使用NodeJ SOCKET.IO
如果使用PHP,它将使服务器的性能比socket.io等JavaScript程序更难。
您的问题: 它工作正常,但我不知道是否有更好的解决方案,而不是使用SESSIONS和间隔函数?
答案: 绝对是一个坏习惯,即使没有新更新,它也会每秒触发一次服务器。假设您同时有100个用户在线,那么服务器每秒将被调用100次,这实际上是给服务器增加了负载。