我之前尝试打开一篇关于这个问题的帖子( here ),认为我编写的代码是错误的。现在我或多或少已经明白,我的代码中的某些版本的 Jquery 无法在 IE7 上运行。发生了什么?我也尝试在JQuery官方论坛(link)上发帖,但没有人回复。不管怎样,在我的旧网站中,我曾经使用 jquery-1.3.2.min.js ,并且没有出现问题。现在,我需要使用 .delegate() 函数,因此我包含 jquery-1.4.2.min.js 库。
在上面您可以看到我在旧应用程序中使用的常用代码:
// html page
<a href="#" onClick="pmNew('1');return false">prova</a>
// javascript page
function pmNew(mexid) {
var time = new Date;
$.ajax({
type: 'POST',
url: './folder/ajax.php',
data: 'mexid='+escape(mexid)+'&id=pmnew',
success: function(msg) {
alert(msg);
}
});
return false;
}
// asynchf.php
if($_POST['id']=="pmnew") {
echo "please, i will just print this";
}
根据本网站一些用户的一些建议,我编辑了这些功能:
// html page
<a href="#" onClick="pmNew('1');return false">prova</a>
// javascript page
function pmNew(mexid) {
var time = new Date;
$.ajax({
type: 'POST',
cache: false,
url: './folder/ajax.php' + '?dummy=' + time.getTime(),
data: 'mexid='+escape(mexid)+'&id=pmnew',
success: function(msg) {
alert(msg);
}
});
return false;
}
// asynchf.php
if($_POST['id']=="pmnew") {
echo "please, i will just print this";
}
但它仍然无法在 IE7 上运行。 Firefox、Chrome,太棒了。仅当我加载页面、尝试(并且收到错误消息)、重新加载(F5)并重试时,它才适用于 IE7。或者,正如我之前所说,我更改了 Jquery 的版本:)
我在真实服务器上加载了一个测试页(所以你可以自己检查这个问题):click here
我希望有人能帮我解决这个大麻烦。
干杯
最佳答案
此错误背后的原因是,当您在 IE7 上使用相对 URL 时,它实际上会添加您的基本 URL(或者从加载页面的任何位置,例如,如果您在主页上放置相对 URL,则相对 URL 实际上会是 http://gabbatracklistworld.com/http://gabbatracklistworld.com/folder/ajax.php
)
我刚刚在 SO 上遇到了你的问题,同时正在寻找几分钟前我遇到的相同问题的解决方案。实际上有an article from microsoft's blog这解释了 IE7 如何处理相对 URL(这很有趣,因为它只是表明他们为他们愚蠢的浏览器的工作方式感到自豪) 看到您还没有答案,我将我的解决方案放在这里以供将来和其他开发人员引用。
我所做的是使用 substring()
删除基本 url 的实例,强制 ajax 请求使用实际的相对 URL。
关于ajax - JQuery - 在 IE7 上失败。跨浏览器兼容性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3749927/