Javascript 无法使用jQuery从外部文件加载xml
我试图使用以下代码加载外部xml,但它不起作用Javascript 无法使用jQuery从外部文件加载xml,javascript,jquery,xml,Javascript,Jquery,Xml,我试图使用以下代码加载外部xml,但它不起作用 $( document ).load( "data.xml", function( response, status, xhr ) { console.log( xhr.status + " " + xhr.statusText ); }); 我在同一个文件夹中有data.xml和js文件 在chrome中,它返回404错误 在FF中,it重新运行0[异常…“拒绝访问受限URI”代码:“1012”nsresult:“
$( document ).load( "data.xml", function( response, status, xhr ) {
console.log( xhr.status + " " + xhr.statusText );
});
我在同一个文件夹中有data.xml
和js
文件
在chrome中,它返回404错误
在FF中,it重新运行0[异常…“拒绝访问受限URI”代码:“1012”nsresult:“0x805303f4(NS\u错误\u DOM\u错误\u URI)”
我不明白为什么会发生这种情况?请解释一下这个问题
更新:我使用下面提到的$.get()
进行了一次尝试,但仍然没有成功
同时,我也尝试使用纯js,如下所示
function loadXMLDoc(dname) {
if (window.XMLHttpRequest) {
xhttp=new XMLHttpRequest();
}
else {
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",dname,false);
xhttp.send();
return xhttp.responseXML;
}
xmlDoc=loadXMLDoc("data.xml");
console.log(xmlDoc);
仍然面临错误
FF中的错误:NS\u错误\u DOM\u错误\u URI:对受限URI的访问被拒绝[在此错误上中断]
xhttp.send()
及
chrome中出现错误:XMLHttpRequest无法加载file:///C:/Users/admin/Desktop/public_html%281%29/public_html/data.xml.
跨源请求仅支持HTTP.xml.js:13 Uncaught
网络错误:发生网络错误
更新:
我发现这很有用,但是有什么办法可以解决这个问题吗?也许这就是你想要的
$(document).ready(function(){
$.ajax({
url: 'data.xml',
dataType: 'xml',
success: function(response, status, xhr){
console.log( xhr.status + " " + xhr.statusText );
}
});
});
更新
经过长期的斗争,在社区的帮助下,我发现了这个问题 同源策略限制从中加载文档或脚本的方式 一个源可以与另一个源的资源交互 这意味着这在系统文件中是不可能的,所以在这个帮助下,我使用WAMPServer来运行我的脚本,它工作得很好
$.get("http://localhost/public_html(1)/public_html/xml/data.xml",
function( response, status, xhr ) {
console.log( response );
});
谢谢!
$(document).load(“data.xml”
没有任何意义。首先,你几乎肯定想在这里使用.get()
,而不是.load()
。@KevinB那么我需要使用任何元素吗?例如$(“#someid”).load(..
如果我的意思不对,请纠正我?@Pointy我尝试使用.get()
但它没有记录控制台消息。我希望您正在使用本地Web服务器来测试这一点。查看控制台错误输出,我发现您正在尝试从文件://
协议获取一个文件,而该文件应该是根文件夹的相对路径,然后根文件夹使用http://
协议。我尝试过,但它不起作用。我很抱歉没有收到任何控制台消息。不,这不起作用。相同的行为,但为了查看错误,我尝试了$.ajax({url:'data.xml',dataType:'xml',success:function(response,status,xhr){console.log(xhr.status+“”+xhr.statusText);},错误:function(response,status,xhr){console.log(xhr.status+“”+xhr.statusText);})
现在它记录未定义的未定义的
表示仍有错误。@PraveenJeganathan以您当前的方式执行它也不起作用?此答案中的方式比您当前所做的要正确得多。您应该使用此答案并添加一个错误回调,然后console.log错误回调中的三个参数back.xml很可能无效。“错误的第三个参数:不是xhr,而是字符串。因此,您当然没有定义。完整地记录它。@KevinB我像error:function(response,status,err){console.Log(err);}一样完整地尝试了它。”
但只打印空日志。看了5分钟,马上就看到了,设置本地主机是解决这类问题的方法^^