Gangmax Blog

My Tip 32

在使用prototype.js操作AJAX时我发现一个奇怪的问题:脚本调用Ajax.updater的代码在IE中没有反应,而在firefox中正常,代码如下:

1
new Ajax.Updater(divName, '<%=request.getContextPath()%>/OppProductItemSelect/View2.do', {method:'get', evalScripts:true});

反复查找资料没有找不到解决方法。后来在prototype.js中的updater定义出添加“alert()”,发现该处是被调用的,但是就是没有返回内容,而且同一个页面中另外一处类似调用没有发现同样的问题,没有问题的调用如下:

1
new Ajax.Updater(divName, 'OppProductItemSelect/Add2.do', {parameters:Form.serialize(formName), evalScripts:true});

最后将有问题的调用改为,为了使有问题的调用尽量和没有问题的调用一样:

1
new Ajax.Updater(divName, '<%=request.getContextPath()%>/OppProductItemSelect/View2.do', {evalScripts:true});

即去掉了“method:’get’”参数,问题解决!真是奇怪!!!

有意思的是:问题代码在IE第一次load该页面的时候,执行该代码并不会出错;但是在同一页面调用同样代码试图达到刷新ajax内容的时候就会发生问题。而在firefox中一切正常。

可见IE是多么的烂啊!!!

参考了这里

Comments