Ajax.Update在IE 8上不起作用

时间:2011-11-15 20:10:06

标签: javascript ajax jsp prototypejs

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

登录按钮调用名为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。

1 个答案:

答案 0 :(得分:0)

无论是POST还是GET,您的响应时间仍然非常接近。我会说你在服务器响应之前仍然遇到竞争状态。

关于预防种族状况,我会看this link。我发现的许多解决方案中的一个说“设置循环以检查每10毫秒的值,否则等待。”