ajax - JQuery - 在 IE7 上失败。跨浏览器兼容性?

标签 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,太棒了。仅当我加载页面、尝试(并且收到错误消息)、重新加载(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/

相关文章:

javascript - 无法访问服务器上的文件

javascript - 使用jquery显示和隐藏产品li

jquery - .then .done promise 不会使用 knockout 和 js 在 durandal spa 中工作

javascript - “1”为空或没有对象......再次

css - 这是哪个 CSS 错误? (页边距底部,ie6 + ie7)

javascript - 如何使用 AJAX 通过 POST 发送图像?

javascript - 单击表单中的链接,将文本区域传递给 php 文件进行处理后更新文本区域

javascript - 使用 JQuery、Ajax 和 PHP 将数据填充到表中

jquery - Canvas 外导航菜单无法正常工作

html - IE7 float 错误解决方法?