我正在制作一个用于管理产品SKUS的网络应用。其中一部分是将SKU与产品名称相关联。在表格的每一行上,我列出了一个SKU并显示一个<select>
带有产品名称的框。当前与数据库中该SKU相关联的产品具有类似的属性selected="selected"
。可以通过AJAX进行更改和更新。
有很多产品<option>
s-确切地说是103-并且此列表<select>
在每一行中重复。
从页面上的另一输入中,我正在使用jQuery AJAX请求添加新的SKU /产品关联,并且为了清楚地表明它们是立即添加的,我将它们插入到表格的顶部,并带有一点高亮效果。随着SKU的数量增加到10左右,如果刷新页面(将所有内容从按产品名称排序的数据库加载回数据库),则Firefox将开始显示默认选择的错误选项。它显示哪个错误选项并不一致,但是似乎混淆了页面重新加载之前存在的选项。
如果我检查<select>
使用的Firebug,select="selected"
则在正确的<option>
标签上。刷新页面(或离开页面并输入该页面的URL以返回)并不能正确显示,但是硬刷新(Ctrl + F5)可以。
Chrome和IE7都首先正确显示此内容。
我的理论是,这是Firefox错误的缓存策略的结果。听起来对吗?我有什么办法可以在代码中说“如果刷新此页面,请对其进行硬刷新-从头开始重新加载所有内容?”
更新资料
为了解决这个问题,我改变了策略。
- 之前,我在每个表格行中都放置了一个
<select>
带有<option>
s的长列表,并将当前值设置为默认值 - 现在,我将当前值放在中
<span>
。如果用户单击“更改”按钮,则将替换<span>
为<select>
,然后“更改”按钮变为“确认”按钮。如果他们更改选项并单击“确认”,则AJAX将更新数据库,然后使用新值<select>
返回到a<span>
。
这有两个好处:
- 它修复了上述错误
- 它需要远在页面上较少的DOM元素(所有这些多余
<option>
S)