我有一个附加到 java 程序的基本 html 文件。每当刷新页面时,此 Java 程序都会更新部分 HTML 文件的内容。我只想在每个时间间隔后刷新页面的那一部分。我可以将要刷新的部分div
放在div
. 任何帮助,将不胜感激。谢谢你。
5 回答
为此使用 Ajax。
构建一个函数,它将通过 ajax 获取当前页面,但不是整个页面,只是来自服务器的有问题的 div。然后数据将(再次通过 jQuery)放入有问题的同一个 div 中,并用新内容替换旧内容。
相关功能:
例如
$('#thisdiv').load(document.URL + ' #thisdiv');
注意,加载会自动替换内容。确保在 id 选择器之前包含一个空格。
假设您的 html 文件中有 2 个 div。
<div id="div1">some text</div>
<div id="div2">some other text</div>
java程序本身不能更新html文件的内容,因为html是和客户端相关的,而java是和后端相关的。
但是,您可以在服务器(后端)和客户端之间进行通信。
我们谈论的是 AJAX,你可以使用 JavaScript 来实现,我推荐使用 jQuery,它是一个常见的 JavaScript 库。
假设您要每隔固定间隔刷新一次页面,那么您可以使用间隔函数每隔 x 次重复相同的操作。
setInterval(function()
{
alert("hi");
}, 30000);
你也可以这样做:
setTimeout(foo, 30000);
其中 foo 是一个函数。
代替 alert("hi") 您可以执行 AJAX 请求,该请求向服务器发送请求并接收一些信息(例如新文本),您可以使用这些信息将其加载到 div 中。
一个经典的 AJAX 看起来像这样:
var fetch = true;
var url = 'someurl.java';
$.ajax(
{
// Post the variable fetch to url.
type : 'post',
url : url,
dataType : 'json', // expected returned data format.
data :
{
'fetch' : fetch // You might want to indicate what you're requesting.
},
success : function(data)
{
// This happens AFTER the backend has returned an JSON array (or other object type)
var res1, res2;
for(var i = 0; i < data.length; i++)
{
// Parse through the JSON array which was returned.
// A proper error handling should be added here (check if
// everything went successful or not)
res1 = data[i].res1;
res2 = data[i].res2;
// Do something with the returned data
$('#div1').html(res1);
}
},
complete : function(data)
{
// do something, not critical.
}
});
虽然后端能够接收 POST 数据并能够返回信息的数据对象,例如(并且非常优选)JSON,但有很多教程介绍了如何做到这一点,谷歌的 GSON 是我的用了一段时间,你可以看看它。
我不擅长 Java POST 接收和 JSON 返回这类的,所以我不会给你一个例子,但我希望这是一个不错的开始。
您需要在客户端执行此操作,例如使用 jQuery。
假设您想用 ID 将 HTML 检索到 div 中mydiv
:
<h1>My page</h1>
<div id="mydiv">
<h2>This div is updated</h2>
</div>
您可以使用 jQuery 更新页面的这一部分,如下所示:
$.get('/api/mydiv', function(data) {
$('#mydiv').html(data);
});
在服务器端,您需要为/api/mydiv
进入 mydiv 的请求实现处理程序并返回 HTML 片段。
请参阅我为您制作的这个小提琴,以获取使用 jQuery get 和 JSON 响应数据的有趣示例:http: //jsfiddle.net/t35F9/1/
使用fetch
andinnerHTML
加载 div 内容
let url="https://server.test-cors.org/server?id=2934825&enable=true&status=200&credentials=false&methods=GET"
async function refresh() {
btn.disabled = true;
dynamicPart.innerHTML = "Loading..."
dynamicPart.innerHTML = await(await fetch(url)).text();
setTimeout(refresh,2000);
}
<div id="staticPart">
Here is static part of page
<button id="btn" onclick="refresh()">
Click here to start refreshing every 2s
</button>
</div>
<div id="dynamicPart">Dynamic part</div>
$.ajax(), $.get(), $.post(), $.load()
jQuery 的函数内部发送XML HTTP
请求。其中load()
只有一个专用的DOM Element
。请参阅jQuery Ajax 文档。有关这些的详细 QA 在这里。