$('.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中导致此错误:
但是,此文件未被阻止。它位于包含上述代码的.html文件旁边。
什么可能导致“许可被拒绝”。我非常怀疑这是由于相同的原产地政策。
任何帮助都非常感谢。感谢
编辑:这只发生在使用ie7的windows xp计算机上。 win7中的Ie7模式效果很好。
编辑#2:这仅适用于作为邮件附件下载的xml文件。
答案 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:///方案,由于相同的原始策略,它将失败