将动态数据流写入 div:
在这里..您专门询问了如何将数据流动态写入“div”。正如许多人所说,可以动态写入 iframe,我们只需要更进一步。这是您问题的完整解决方案,它将以 0.5 秒的最大延迟将该数据带回您的 div。如果您需要更及时的更新,可以对其进行调整。
<!DOCTYPE html>
<html>
<head>
<title>dynamic listener</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
var count;
$(function(){
$('#formx').submit(function(){
setTimeout(function(){ check_div(); }, 500);
count = 0;
return true;
});
});
function check_div()
{
var $iframetxt = $('#iframex').contents().text();
var $div = $('#dynamic');
if( $iframetxt != $div.text() )
{
console.log('rewritten!');
$div.text( $iframetxt );
setTimeout(function(){ check_div(); }, 500);
count = 0;
}
else
{
count++;
if(count < 40) setTimeout(function(){ check_div(); }, 500);
else console.log('timed out');
}
}
</script>
</head>
<body>
<div>
Form
<form id="formx" action="result.php" method="post" target="iframex">
<input type="submit" />
</form>
</div>
<div id="dynamic"></div>
<iframe id='iframex' name="iframex" style="display:none" ></iframe>
</body>
</html>
1. 在表单提交时,流数据被发送到 iframe。
为此,我们只需将表单标签中的目标属性设置为 iframe 名称。
2. check_div() 每 0.5 秒运行一次,将#dynamic div 的文本与 iframe 的文本内容进行比较。
如果它们之间存在差异,则将数据写入div并再次调用超时。如果没有差异,则超时计数器递增。如果计数小于 40(40 x .5 秒 = 20 秒),它会再次调用超时。如果没有,我们假设流已经完成。