我有一个带有复选框的表单,其“已检查”值是从数据库中的代码填充的。
想象一下,如果我有复选框1,2和3都设置为在数据库中检查。我加载页面,取消选中复选框3,然后将更改提交到数据库。现在在我的数据库中,选中复选框1和2,取消选中3。我刷新页面,它获取更新的数据库值,复选框具有正确的选中值。
这只适用于chrome和FF。在IE中,即使我取消选中复选框3,将更改提交到数据库并刷新,它仍然显示为已选中。我用ctrl + f5强制刷新,但仍然没有更新。将autocomplete =“off”添加到复选框和父表单都没有做任何事情。
答案 0 :(得分:1)
此问题已在评论中得到解答,但答案中未提供相关答案。我试图在这里回答它,以便它对面临同样问题的所有其他用户都有用。
解决方案可以是:
一些浏览器通常认为连续的ajax调用没有请求更改,这个问题在IE 10
中特别可重现。请求的响应为HTTP 304 Not Modified
,请求未命中数据库。解决方案是使用ajaxSetup
将cache
设置为false
,如:
$(document).ready(function() {
$.ajaxSetup({ cache: false });
});
注意:这将为会话中的所有ajax调用设置缓存false。
或强>
如果您不想为所有ajax调用禁用缓存,请在特定的ajax调用中使用cache: false
。
$.ajax({
...
cache: false,
...
});
答案 1 :(得分:0)
我认为使用javascript node.autocomplete = 'off'
会更好。有时候会有所帮助。
并且不要忘记IE有时really ignored autocomplete,例如,IE11忽略autocomplete = off,输入类型=“密码”到keeps user in control
。