【发布时间】:2021-11-19 08:06:39
【问题描述】:
如标题所示,我的网站遇到了一些问题,
我使用ajax读取我的API,ajax成功后,我需要重新加载页面以显示一些数据,
不幸的是,页面有时会闪烁然后重新加载,但有时不会。
我使用 setTimeout 来实现这一点,因为我正在编写购物车页面,
它允许用户编辑他们购物车的商品。
我的想法是:用户停止点击加号或减号按钮或停止输入大约 1 秒后,
ajax 将执行读取我的 API,ajax 成功后,重新加载页面。
那么,有什么方法可以防止页面闪烁?
或者我可以制作一个加载 gif 以显示在页面上?
我的代码会是这样的:
var timeout = null;
$('.num').on('keyup', function() {
var newNum = $(this).val();
var pid = $(this).attr("name");
clearTimeout(timeout);
timeout = setTimeout(function() {
if(newNum <= 0){
alert("At least 1 product!");
$(this).val("1");
$.ajax({
type: "post",
url: myAPI,
async: false,
data: {
pid: pid,
newNum: 1
},
dataType: "json",
success:function(data){
window.location.reload(true);
},
});
}else {
$.ajax({
type: "post",
url: myAPI,
async: false,
data: {
pid: pid,
newNum: newNum
},
dataType:"json",
success:function(data){
window.location.reload(true);
},
});
}
}, 1000)
});
【问题讨论】:
-
为什么不为加载数据创建一个函数而不是重新加载整个页面,然后在成功的 ajax 上使用该函数?
-
@SimoneRossaini 如果 ajax 成功,我会重新加载整个页面
-
“我需要重新加载页面以显示一些数据,” - 你应该做的是在你的 Ajax 响应中获取数据,然后使用更新页面上的内容JS。使用 Ajax 的全部意义在于避免页面刷新(这将导致闪烁/闪烁)。
-
确实,页面闪烁是重新加载的结果,通常是因为 HTML 非常复杂或有问题。正常的方法是使用 AJAX 调用,检索页面上的更改,然后仅更新。
-
X/Y 问题....
标签: javascript php jquery ajax