IE7& jquery ajax XML:本地xml文件上的权限被拒绝

时间:2012-08-09 09:24:32

标签: jquery xml ajax internet-explorer-7

$('.upload').change(function () {
    var $container = $('#container');
    $container.find('input:checkbox, input:text, select').val('');

    var $thisUpload = $(this);
    var path = 'file:///' + $thisUpload.val().replace(/\\/g, "/");

    $.ajax({
        url: path,
        dataType: 'xml',
        success: function (data) {
        },
        error: function (request, status, error) {
            if (error.message == 'Permission denied') {
                //this is where i end up
            }
        }
    });
});

我知道“阻止”文件可能会在IE中导致此错误:

http://webactivedirectory.files.wordpress.com/2011/10/unblockfile.png

但是,此文件未被阻止。它位于包含上述代码的.html文件旁边。

什么可能导致“许可被拒绝”。我非常怀疑这是由于相同的原产地政策。

任何帮助都非常感谢。感谢

编辑:这只发生在使用ie7的windows xp计算机上。 win7中的Ie7模式效果很好。

编辑#2:这仅适用于作为邮件附件下载的xml文件。

6 个答案:

答案 0 :(得分:2)

你说这只发生在xml文件中,这些文件作为邮件附件下载并且仅在win xp上下载。也许某些防病毒应用程序或您的电子邮件客户端阻止xml附件,您是通过WWW客户端还是某些桌面客户端下载附件?

答案 1 :(得分:2)

听起来你正面临与现有帖子jQuery AJAX problem in IE7 (possibly other versions as well)相同的问题,通过编写代码来解决ajax调用而不使用jQuery(创建XMLHttpObject,onreadystatechange等)和使用jQuery解析XML。

答案 2 :(得分:1)

出于明显的安全原因,您无法通过AJAX访问本地文件。

请注意,file:///协议指向正在执行代码的客户端计算机的本地文件系统。

如果文件在您的服务器上,您应该能够修改路径以指向服务器位置。

答案 3 :(得分:1)

只需删除file:///并自行提供路径。这意味着给出path / filename.xml

答案 4 :(得分:1)

这更像是一个提示,然后是一个答案,但是很想发表评论。

很抱歉,但是在W7上IE7(不是IE9浏览器模式)无法重现,在我的XP虚拟机上也无法重现,所以我可以帮你解决一些问题。

你可以使用未缩小的版本来调试jquery.ajax,我知道IE7缺乏开发工具来调试,但你可以安装IE7开发工具,它会工作很糟糕,但也许它会工作,如果没有,你会需要使用eather警报,或创建自己的console.log:

<div id="console" style="height:100px;position:fixed;bottom:0;left:0;rigth:0"></div>

function log(e){
    $('#console').prepend($('<div>').html(e))
}

你可以开始看了 功能完成(状态,nativeStatusText,响应,标题) 在 ajax:function(url,options)

您需要查找的是错误发生的原因以及这是jQuery错误还是IE7错误。对不起,我无能为力。

答案 5 :(得分:0)

  

我非常怀疑这是由于相同的原产地政策。

你确定吗?你如何访问执行ajax请求的页面(页面的URL)? 请记住,如果您将浏览器指向:

http://localhost.loc/page.that.does.the.ajax.request.html

并且ajax请求将尝试访问file:///方案,由于相同的原始策略,它将失败