JQuery - 它在IE 7上失败。跨浏览器兼容性?

时间:2010-09-20 08:57:53

标签: ajax jquery internet-explorer-7

我试着打开一篇关于这个问题的帖子(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,它摇滚。它只适用于IE7,如果我加载页面,我尝试(我得到错误信息),我重新加载(F5),我重试。或者,正如我之前所说,我改变了Jquery的版本:)

我在真实服务器上加载了一个测试页(所以你可以检查一下这个问题):click here

我希望有人可以帮我解决这个大麻烦。

干杯

2 个答案:

答案 0 :(得分:4)

此错误背后的原因是当您在IE7上使用相对URL时,它实际上会添加您的基本URL(或者您的页面加载的位置,例如,如果您在主页上放置相对URL,则您的相对URL实际上是{ {1}})

我刚刚在SO上遇到了你的问题,同时在几分钟前我自己解决了同样的问题。实际上an article from microsoft's blog解释了IE7如何处理相对网址(这很有趣,因为它只是表明他们为他们的愚蠢浏览器如何工作感到自豪) 看到你还没有回答,我会把我的解决方案放在这里以供将来参考和其他开发人员使用。

我所做的是使用http://gabbatracklistworld.com/http://gabbatracklistworld.com/folder/ajax.php去除我的基本网址的实例,强制ajax请求使用实际的相对网址。

答案 1 :(得分:0)

您可以将此参数添加到.Ajax选项中:

error:function(xhr, status, errorThrown) {
            alert(errorThrown+'\n'+status+'\n'+xhr.statusText);
        }, 

并回复消息?