gpt4 book ai didi

jquery - 如何使用ajax刷新刷新div?

转载 作者:可可西里 更新时间:2023-11-01 14:49:27 26 4
gpt4 key购买 nike

我正在从事 spring mvc Controller 元素,在该元素中我将数据从 Controller 传递到 jsp。我的 jsp 页面有水平选项卡设计,点击每个选项卡后,我会显示表格。

目前我的设计中只有两个选项卡。只要我单击 TEST1 选项卡,它就会显示 Table1 但如果我单击 TEST2 选项卡,它会显示另一个具有不同列和数据的表Table2 并且工作正常。

这是我的 jsfiddle .

这是我的 test4.jsp 设计 -

<div id='headerDivDash'>
<h1 id='topHeaderDash'>
some_image
</h1>
</div>

<ul id="tabs">
<li><a href="#" name="tab1">TEST1</a></li>
<li><a href="#" name="tab2">TEST2</a></li>
</ul>

<div id="content">
<div id="tab1">
<h2>Test 1</h2>
<div class="container">
<c:forEach var="e" items="${testing.machines}">
<div class="component">
<h3>
For
<c:out value="${e.key}" />
</h3>
<table class="overflow-y">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Address</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<c:forEach var="m" items="${e.value}">
<tr>
<th>${m.fName}</th>
<td class="color-changer">${m.lName}</td>
<td>${m.address}</td>
<td>${m.email}</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</c:forEach>
</div>

</div>
<div id="tab2">
<h2>Test 2</h2>

<div class="container">
<c:forEach var="e" items="${testing.machines}">
<div class="component">
<h3>
For
<c:out value="${e.key}" />
</h3>
<table class="overflow-y">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Address</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<c:forEach var="m" items="${e.value}">
<tr>
<th>${m.fName}</th>
<td class="color-changer">${m.lName}</td>
<td>${m.address}</td>
<td>${m.email}</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</c:forEach>
</div>
</div>
</div>
<div class="footer">&copy Some value</div>

我正在将数据从 Controller 传递到 jsp 页面。现在我想做的是 -

  • 我想使用 AJAX 刷新每 30 秒刷新我的两个标签,即 tab1 divtab2 div
  • 此外,如果我在 TEST1 选项卡上,然后正在刷新,那么它应该在 TEST1 选项卡上,但假设我在 TEST2 选项卡,然后刷新正在发生,那么它应该在 TEST2 选项卡上。

下面是我为 tab1 刷新想出的 jquery 不知道我将如何将它用于 tab2 但刷新后不知何故,我仍然看到旧数据,刷新后不显示最新数据。

$(document).ready(function(){
// Create overlay and append to body:
$('<div id="overlay"/>').css({
position: 'fixed',
top: 0,
left: 0,
width: '100%',
height: $(window).height() + 'px',
opacity:0.4,
background: 'lightgray url(http://bradsknutson.com/wp-content/uploads/2013/04/page-loader.gif) no-repeat center'
}).hide().appendTo('body');

// Execute refresh with interval:
setInterval(refresh, 30 * 1000);
});

//Create a refresh function:
function refresh(){
// SHOW overlay
$('#overlay').show();
// Retrieve data:
$.ajax({
url: 'test4.jsp',
type: 'GET',
success: function(data){
var content = $($.parseHTML(data)).filter("#tab1");
//Replace content inside the div
$('#tab1').replaceWith(content); # this is not updating my tab div with latest data
// HIDE the overlay:
$('#overlay').hide();
}
});
}

我根本看不到我的 tab1 div 正在刷新。我可以看到显示刷新图像,但不知何故 tab1 总是保存相同的旧数据,这是我第一次看到的 url。我的 jquery 有什么问题吗?

我还注意到一件很奇怪的事情,如果我删除 content div 和 tab1 div 并刷新 container div 然后我就能看到我更新的数据刷新后它工作正常,但如果我添加 content 和 tab1 div 并尝试刷新 container div,那么它根本不起作用。所以肯定有问题..

我怀疑这是因为我的 css 问题而发生的,我猜这是在 jsfiddle 中显示的。

谁能帮我解决这个问题?

最佳答案

首先,当您尝试获取 test4.html 时,它在 ajax 上出现 404 错误,所以我使用测试(jsfiddle 默认 ajax 模型)。我可以在 tab1 上看到关于 tab2 的更新,如果你在 ajax 成功时替换“#tab1”中的内容,它将不会更新 tab2 内容。

第二个不要使用 replaceWith() 这将替换完整的元素,所以下次将没有 id="tab1"的 div 元素.. 而是使用这个..

        if( $("#tabs li:first").attr("id") ==="current"){
$('#tab1').html("dummy content 1");
}
else { $('#tab2').html("dummy content 2"); }

Fiddle DEMO

关于jquery - 如何使用ajax刷新刷新div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22469754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com