2011-11-15 64 views
0

我有一个登录表单,用户可以输入usrname/password并单击此表单上的登录按钮向服务器发送请求。Ajax.Update不适用于IE 8

登录按钮调用一个名为submitLoginFormIntoDivAndReload的函数,函数submitLoginFormIntoDivAndReload调用另一个名为submitFormObjIntoDivAndReload的函数。

下面是这些功能的细节:

function submitLoginFormIntoDivAndReload(servletUrl, formObj, divId) { 

//var formObj = document.getElementById(formId); 
var shortUserName = formObj.shortusername.value; 
alert("starting userName: " + shortUserName); 
var organization = formObj.organization.value; 
alert("organization: " + organization); 
formObj.username.value = createLdapString(shortUserName, organization); 
alert("ending userName: " + formObj.username.value); 
var loggingInContent = "<table><tr><td width='600px' align='center'><p>logging in</p></td></tr></table>" 
document.getElementById(divId).innerHTML = loggingInContent; 

submitFormObjIntoDivAndReload(servletUrl, formObj, divId); 

} 

function submitFormObjIntoDivAndReload(url, formObj, divId) { 
alert('Form object: ' + formObj); 
alert('url: ' + url); 
alert('divId: '+divId); 
var myRequest = new Ajax.Updater(divId, url, 
     { method: 'post', 
      parameters: Form.serialize(formObj), 
      onSuccess: function(reponse) { 
       window.location.reload(); 
      } 
     }); 
alert("after update"); 
} 

此代码工作完全在Firefox。但是,它不适用于IE。

在IE上,我可以得到所有警报(用于调试)。但是,Ajax.Updater似乎没有向服务器发送请求(我在服务器端看不到任何输出)。

关于FireFox,我可以得到所有的改变。我可以看到Ajax.Updater确实向服务器发送了请求,因为我可以在服务器端看到预期的输出。

我搜索了网上,有人说,IE浏览器有一个缓存的问题: Ajax updater not working in internet explorer 但似乎这个问题只为“GET”方法,而不是为“POST”方法。我正在使用“POST”方法。我还在表单中添加了一个假输入,但它仍然无效。

有人有什么想法吗?非常感谢你!

顺便说一句,我使用原型1.5.1。

+0

为什么你使用这样一个旧版本的Prototype? 1.7已经出现一段时间了,并有很多改进。 – megaflop

+0

我改为1.7。然后它在IE上工作过一次。但它不再起作用。这真的是缓存问题吗? – Jing

+0

可能。您是否在每次尝试之前尝试清除浏览器的缓存?如果你能够,你能发送缓存预防头与服务器的回应? 'Cache-Control:no-cache,must-revalidate' and'Expires:Sat,26 Jul 1997 05:00:00 GMT'应该诀窍 – megaflop

回答

0

无论是POST还是GET,您的响应时间仍然会非常接近。我想说的是,在服务器响应之前,你仍然在经历一场持续的竞争状态。

我想看看this link关于预防竞争条件。我发现的许多解决方案之一说:“设置一个循环来检查每个十毫秒的值,否则等待。”

+0

这是一个赛车问题吗?我认为问题是请求从未发出(我无法在服务器端看到预期结果)。 – Jing