Javascript 如何在ajax成功中调用location.reload()后显示隐藏字段值
调用Javascript 如何在ajax成功中调用location.reload()后显示隐藏字段值,javascript,jquery,model-view-controller,Javascript,Jquery,Model View Controller,调用location.reload()后显示隐藏字段值 重新加载时,页面将重新加载。因此,对页面状态所做的任何更改都将丢失 所以你有两个选择: 不要重新加载。这是首选方案。您已经在使用AJAX,只需根据需要更新页面的状态即可。你根本不需要重新加载 在重新加载之前,在某个地方保留一些标志(本地存储?cookie?类似性质的东西),指示应该显示该字段。在页面的启动代码中(您使用的是jQuery,因此我假设document.ready处理程序在这里是标准的)检查该标志并显示该字段 第一种选择当然更可取
location.reload()
后显示隐藏字段值
重新加载时,页面将重新加载。因此,对页面状态所做的任何更改都将丢失
所以你有两个选择:
document.ready
处理程序在这里是标准的)检查该标志并显示该字段$(function () {
var shouldShowField = getPersistedFlag();
if (shouldShowField) {
$('#imageUploadScs').show();
}
});
// elsewhere...
ajaxRequest.done(function (xhr, textStatus) {
setPersistedFlag();
location.reload();
});
getPersistedFlag
和setPersistedFlag
的实现就是上面所描述的。他们将读写您想要持久化的任何数据到您选择的任何存储机制。(其中任何一个都有许多可用的示例。)
如果这似乎使工作过于复杂,那么你可能是对的。这就是为什么不首先重新加载页面的第一个选项是首选的。在location.reload()之后写入的任何命令都不会发生,因为您在执行之前重新加载了页面。所以你要从头开始。你的逻辑需要重新思考,你需要坚持价值观。在
localstorage
中,重新加载页面时将其取回。重新加载页面违背了使用Ajax的目的。您的代码毫无意义。为什么要使用ajax?@charlietfl您可以。。。检查本地存储是否为空,如果为空则输入保持隐藏如果为空,使用localstorage并删除localstorage,就这么简单
$(function () {
var shouldShowField = getPersistedFlag();
if (shouldShowField) {
$('#imageUploadScs').show();
}
});
// elsewhere...
ajaxRequest.done(function (xhr, textStatus) {
setPersistedFlag();
location.reload();
});