grails IE ajax问题

时间:2011-07-25 19:29:22

标签: ajax internet-explorer grails prototypejs

我正在使用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的情绪,这种行为完全不可预测。

之前有没有人遇到过这个问题?我该如何解决这个问题?

由于

2 个答案:

答案 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;    
}

这里有更详细的解释:

Grails: best way to send cache headers with every ajax call

答案 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;中的

部分。