我正在使用grails开发我的应用程序和'prototype'库来进行AJAX调用 我在IE上有问题。在所有其他浏览器中我的应用程序正常 这是我的代码:
<html>
<g:form action="ajaxcall" id="recform">
<g:select id="aseselect" name="art" from="${dropdownList}" optionKey="id" optionValue="value" noSelection="['':'- Select -']"/>
<g:submitToRemote action="ajaxcall" value="submit" update="updatediv" />
</g:form>
<div id="updatediv"></div>
</div>
</html>
这是我的控制器代码:
def ajaxcall = {
String toRender="";
//code that makes db call and adds html into the toRender string
render toRender;
}
'toRender'字符串包含一个无序列表的html,它在firefox,chrome和safari中呈现得很好但不是IE,它似乎有时无法获得整个列表或者有时会得到一个空列表。根据IE的情绪,这种行为完全不可预测。
之前有没有人遇到过这个问题?我该如何解决这个问题?
由于
答案 0 :(得分:0)
这是由于IE的缓存。我添加
response.setHeader("Cache-Control", "no-store")
到ajax调用的控制器方法,它告诉浏览器不要缓存该响应。
所以你的控制器方法应该类似于:
def ajaxcall = {
response.setHeader("Cache-Control", "no-store")
String toRender="";
//code that makes db call and adds html into the toRender string
render toRender;
}
这里有更详细的解释:
答案 1 :(得分:0)
我使用FormData()将IE(11)浏览器AJAX修复为Grails控制器问题,删除
< meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
或将其更改为
< meta http-equiv="X-UA-Compatible" content="IE=Edge" />
HTML&lt; head&gt;中的部分。