Javascript-Prototype:表单上的Event.observe不适用于IE

Javascript-Prototype:表单上的Event.observe不适用于IE,javascript,xml,events,prototypejs,observer-pattern,Javascript,Xml,Events,Prototypejs,Observer Pattern,我有一个JS,它从一个服务获取一个XML响应,是真是假,脚本应该捕获提交并从服务获取响应。 问题是,我看到它不起作用,因为当我提交时,我在IE(6/7/8)上看到了XML响应,而脚本应该捕获它并验证XML响应 <div id="eventForm" style="display:none;"> Event.observe('formDataPersonal', 'submit', function(event) { $('formDataPersonal').requ

我有一个JS,它从一个服务获取一个XML响应,是真是假,脚本应该捕获提交并从服务获取响应。 问题是,我看到它不起作用,因为当我提交时,我在IE(6/7/8)上看到了XML响应,而脚本应该捕获它并验证XML响应

<div id="eventForm" style="display:none;">
    Event.observe('formDataPersonal', 'submit', function(event) {
    $('formDataPersonal').request({
        onSuccess: function(t) {
            var xml  = t.responseXML.documentElement;
            var stateNode = '';
            var msgNode = '';
            if (navigator.appName == "Microsoft Internet Explorer"){
                stateNode = xml.childNodes[0].nodeValue.toLowerCase();
                msgNode = xml.childNodes[1].nodeValue;
            }else{
                stateNode = xml.childNodes[0].textContent.toLowerCase();
                msgNode = xml.childNodes[1].textContent;
            }
            if (stateNode == 'true'){
                $('transparentDiv').style.display='none';
                $('popup').style.display='none';
                validateIntegrationPopup();
            }else{
                var error = msgNode;
                if (error != ''){
                    $('interfase').innerHTML = error;
                }
            }
        }
     })
    });
</div>

观察('formDataPersonal','submit',函数(事件){
$('formDataPersonal')。请求({
onSuccess:函数(t){
var xml=t.responseXML.documentElement;
var stateNode='';
var msgNode='';
如果(navigator.appName==“Microsoft Internet Explorer”){
stateNode=xml.childNodes[0].nodeValue.toLowerCase();
msgNode=xml.childNodes[1].nodeValue;
}否则{
stateNode=xml.childNodes[0].textContent.toLowerCase();
msgNode=xml.childNodes[1].textContent;
}
如果(stateNode==“true”){
$('transparentDiv').style.display='none';
$('popup').style.display='none';
validateIntegrationPopup();
}否则{
var error=msgNode;
如果(错误!=''){
$('interbase')。innerHTML=错误;
}
}
}
})
});

我将非常感谢您的帮助。

我认为问题可能是“IE”没有看到提交事件,因此它通常只提交表单:


请参阅:

这是一个老问题,但我在谷歌搜索中成功地获得了第二个结果,因此:

您并没有阻止提交事件通过浏览器,这就是为什么即使事件处理程序附加到表单上,表单仍在提交。添加一个
事件.stop()


观察('formDataPersonal','submit',函数(事件){
事件停止();
$('formDataPersonal')。请求({
//……代码。。。。
});
});

是否将contentType设置为text/xml?
<div id="eventForm" style="display:none;">
    Event.observe('formDataPersonal', 'submit', function(event) {
       event.stop();
       $('formDataPersonal').request({
          // .... code ....
       });
    });
</div>