下面的代码将在页面加载后执行AJAX请求,然后在弹出窗口中显示AJAX调用的响应。这在火狐中有效,但我不知道为什么它在IE8中不起作用。
<html>
<head>
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript">
// Do this stuff when DOM finishes loading.
document.observe("dom:loaded", function() {
new Ajax.Request("page.html", {
onSuccess: function(response) {
alert(response.responseText);
}
});
});
</script>
</head>
<body>
</body>
</html>page.html只包含
hello world我是否遗漏了一些明显的东西,或者这是prototype js库与IE8不完全兼容的结果?我用最新的稳定原型版本(1.6.0.3)和最先进的版本(1.6.1 RC3)尝试了一下,但没有成功。任何帮助都将不胜感激,谢谢!
发布于 2009-07-14 02:09:19
您是在网站上执行此操作,还是使用文件?我可以让你的代码在Visual Studio的网站上运行,但是当我从一个文件中尝试它时,我得到了一个“访问被拒绝”的错误。我怀疑,由于IE8中的安全限制,它无法对本地文件系统中的文件执行Ajax请求。
下面是我在Default.aspx页面中加载page.htm文件时使用的代码。请注意,我更改了方法--因为它不是一个表单--并且添加了失败和异常的回调。异常回调是通过本地文件为我触发的。正如我所说的,当访问同一网站中的页面时,它工作得很好。
<script type="text/javascript">
document.observe( 'dom:loaded', function() {
new Ajax.Request("page.htm", {
method: 'get',
onSuccess: function(response) {
alert(response.responseText);
},
onFailure: function(response) {
alert(response);
},
onException: function(request,error) {
alert(error.message);
}
});
});
</script>发布于 2010-08-11 06:30:12
这只是对现有答案的一个补充,只是想提一下,当你在Ajax调用中使用'get‘时,IE8会做一些疯狂的缓存。我的web应用程序在FF中工作得很好,但在IE8中,一些ajax调用从未进行过。我更改了方法:从'get‘改为'post’,一切都很好。
method: 'post'此外,为了进一步确保在IE8中不会出现带有会话变量的搞笑事件,请在html页面的头部放置以下元标记。
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">https://stackoverflow.com/questions/1122984
复制相似问题