Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取跨源XmlHttpRequest以返回HTML5中的XML文件_Javascript_Php_Xml_Html_Xmlhttprequest - Fatal编程技术网

Javascript 获取跨源XmlHttpRequest以返回HTML5中的XML文件

Javascript 获取跨源XmlHttpRequest以返回HTML5中的XML文件,javascript,php,xml,html,xmlhttprequest,Javascript,Php,Xml,Html,Xmlhttprequest,编辑:记得经常检查你的网络标签上的错误,我贴出的答案详细说明了这是我一个愚蠢的问题,谢谢你 我正在为一个HTML5网站编写一些后端代码,但我无法让这个非常重要的功能正常工作。该站点通常需要从不同的服务器动态提取PHP生成的XML文件。我非常确定服务器的访问控制允许源设置允许来自此服务器的请求。我会和我的老板核实一下,但他要离开几天,老实说,我很可能做错了什么。有人看到这个代码有问题吗 请注意,我在底部的request.send(null)和after.之前有一个警报。send()工作正常,如果我

编辑:记得经常检查你的网络标签上的错误,我贴出的答案详细说明了这是我一个愚蠢的问题,谢谢你

我正在为一个HTML5网站编写一些后端代码,但我无法让这个非常重要的功能正常工作。该站点通常需要从不同的服务器动态提取PHP生成的XML文件。我非常确定服务器的访问控制允许源设置允许来自此服务器的请求。我会和我的老板核实一下,但他要离开几天,老实说,我很可能做错了什么。有人看到这个代码有问题吗

请注意,我在底部的request.send(null)和after.之前有一个警报。send()工作正常,如果我从同一台服务器请求XML文件,函数将完成,但如果我从另一台服务器请求,则会收到“before”警报,而不是“after”。我也没有看到向我显示错误或其他警报

注:

在其他.js文件中有一些对全局变量等的引用。我已经确定,包括他们将是毫无意义的,只是混乱的问题

“cross”只是一个布尔值,表示请求是否是跨来源的,指向另一台服务器

函数createXmlHttpRequestObject(交叉){
如果(交叉===未定义){
交叉=假;
}
var-xmlHttp;
如果(交叉){
if(window.XDomainRequest){
试一试{
xmlHttp=new window.XDomainRequest();
}捕获(e){
xmlHttp=false;
}
}否则{
xmlHttp=新的XMLHttpRequest();
}
}否则{
if(window.ActiveXObject){
试一试{
xmlHttp=新的ActiveXObject(“Microsoft.xmlHttp”);
}捕获(e){
xmlHttp=false;
}
}否则{
试一试{
xmlHttp=新的XMLHttpRequest();
}捕获(e){
xmlHttp=false;
}
}
}
如果(!xmlHttp){
警报(“错误:创建XMLHTTP请求对象失败”);
}否则{
返回xmlHttp;
}
}
//从文件接收xml对象
函数getXmlObject(URL){
//若url包含任何站点根目录,那个么它不是跨域的
var-cross=false;
如果(!URL.includes(URL\u home)){
交叉=正确;
}
var request=createXmlHttpRequestObject(交叉);
var反应;
if(window.ActiveXObject | | window.XDomainRequest){
request.onload=函数(){
response=request.responseXML;
};
打开('GET',URL,false);
请求发送(空);
}否则{
打开('GET',URL,false);
request.onreadystatechange=函数(){
if(request.readyState==4){
如果(request.status==200){
response=request.responseXML;
}否则{
var warn='未找到\n'+URL;
响应=警告;
警惕(警告);
}
}
};
警惕(“之前”);
请求发送(空);
警报(“之后”);
}
返回响应;

}
在“网络”选项卡确认中发现,在我尝试访问的服务器上实际上没有访问控制允许源标志。我得找对人谈谈,看看能不能改变。尽管如此,如果此代码可以改进,或者这里仍然存在我没有看到的问题,请指出。

您在“网络”选项卡中看到了什么?调用中没有错误处理程序的原因?出现问题的浏览器?唉,这太尴尬了。我从没想过要检查一下。我对网络编码比较陌生,总是忘了我有网页标签来查找错误。我的怀疑是正确的。我试图从中提取的服务器没有Access Control Allow Origin标志。好吧,是时候问问合适的人了,这是否可以改变。谢谢,埃帕斯卡雷罗。