我正在尝试使网页的一部分每隔一段时间刷新一次。 我在Web应用程序中将Spring Boot与thymeleaf结合使用。 我决定使用一个jquery get请求来联系我的mvc控制器,但是该get请求似乎没有被控制器处理。
我已经尝试过在加载时调用该函数,但这没有任何结果。
这是Ajax函数:
function setupRefresh() {
setInterval(refreshFrame(), 1000);
}
function refreshFrame() {
$.ajax({type: "GET",
url: "http://localhost:8080/refresh"
}).done(function (fragment) {
$("#navbar").replaceWith(fragment);
}).fail(function (jqXHR, textStatus, errorThrown) {
alert("AJAX call failed: " + textStatus + ", " + errorThrown);
});
}
这是我要刷新的div:
<nav id="navbar" class="navbar" th:fragment="navbar">
<input type="text" name="search" placeholder="Search..">
<div class="mx-auto order-0">
<a class="navbar-brand" href="/index">Boxed</a>
</div>
<div>Generate Days:</div>
<a th:text="${currentDay}" th:href="@{/toggleGeneration}" onclick="setupRefresh()"></a>
</nav>
这是我的控制人
@Controller
public class DataController {
@Autowired
private DayService dayService;
@GetMapping(value = "/refresh")
public String refreshNumber(Model model){
model.addAttribute("currentDay", dayService.findHighest().getDayNr());
return "index.html :: #navbar";
}
}
似乎甚至没有执行get请求,因为我什至没有在页面上收到错误警报。在get请求之外编写的所有内容均已执行,但是请求本身却没有给我任何好处。
答案 0 :(得分:0)
这可能与您的$.ajax
函数有关。
看看它应该如何(获取):
$.ajax({
url: url,
data: data,
success: success,
dataType: dataType
});
和 POST :
$.ajax({
type: "POST",
url: url,
data: data,
success: success,
dataType: dataType
});
什么是GET和POST?
GET 作为URL参数传递数据,因此您可以查看和修改它。 GET比POST更快。
POST 是一种最安全的方法,因为它通过HTTP请求传递数据。
希望这会有所帮助!
布拉卡(Brhaka)
答案 1 :(得分:0)
您可能已经找到了答案,但是您需要添加函数调用,例如,将其添加到onload中(尝试这样做)。然后从ajax url参数中删除“ http://localhost:8080/”,至少对我而言,它始终在不使用斜杠的情况下工作。我不确定从控制器返回数据的方式,因为我是用另一种方式来做的。
function myFunction() {
setInterval(ajaxFunc, 1000);
}
function ajaxFunc() {
$.ajax({
type: "GET",
url: "refresh"
}).done(function (fragment) {
$("#navbar").replaceWith(fragment);
}).fail(function (jqXHR, textStatus, errorThrown) {
alert("AJAX call failed");
});
}
window.onload = function() {
myFunction();
};