我只在firefox中遇到问题:
我使用我自己的方法生成查询字符串,格式为
<form name="mytestform" action="/submit.do">
<input name="hiddenID" value="12345" type="hidden" >
</form>
每次每次请求更改值hiddenID时,都会通过ajax调用此页面。
当我使用 getFormData(mytestform)获取表单数据时,它返回第一个访问的表单值(即我一直得到值 hiddenId = 12345 )。
如果我使用 getFormData(document.mytestform),它可以正常工作。
当我使用ajax时,我不确定表单对象是否在firefox中缓存。
请解释一下它背后的逻辑是什么?
答案 0 :(得分:1)
浏览器有两个版本的页面。 orignial加载时的样子和执行所有javascript后的当前版本。如果您查看页面的源代码,则会获得原始代码。
我猜这里发生了同样的事情。通过使用document.mytestform,您可以访问该页面的当前版本。
答案 1 :(得分:0)
发送表单数据的默认方法是GET。这样可以缓存响应。如果您不希望该行为使用POST方法。
答案 2 :(得分:0)
除非您将Expires:-1指定为响应上的标头或更改查询字符串,否则将缓存整个响应,即使使用AJAX也是如此。 一个快速的解决方案是将新的Date()附加为AJAX请求的额外参数 e.g。
$.GET("myURL/myForm.jsp?nocache="+new Date());
有更多优雅的解决方案,但这应该足以证明它是缓存是你的问题