在FireFox 3.5中,XMLHTTPRequest.status返回0并且responseText为空

som*_*men 8 html javascript ajax xmlhttprequest

我正在尝试点击第三方网址以获取XML响应并显示重新发布到我的网页中.我在IE和Safari浏览器中得到状态为200且readystate为4的正确响应.但在FF3.5和Crome中,我将XMLHTTPRequest状态设置为0,而reponseText则为空字符串.我尝试了许多选项来编写正常的XMLHTTPRequest Ajax代码以及使用Prototype 1.5版本js文件来处理这个ajax请求,但是FF 3.5中的状态和reponseText仍然与0和空字符串相同.

任何帮助如何解决此问题或究竟是什么导致此问题将不胜感激.我还尝试在本地执行我的代码以及部署到webserver仍然在FF中的repsonse是相同的.

以下是我的代码段

<script type="text/javascript" src="prototype_ajax.js"></script>

<script type="text/javascript" language="javascript">

new Ajax.Request("I place my URL Here", {
    method: 'get',
    onSuccess : function(transport){

       var resultDoc = transport.responseText;
       var rootObj = loadXML(resultDoc);

    },
    onFailure : function(transport){
       alert(' On Failure '+transport)

    }
});

function loadXML(xmlFile) {
   var xmlDocElement =null;
   var xmlDoc = null;

   if (window.ActiveXObject) {
     try {
        // code for IE
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async=false;
        xmlDoc.loadXML(xmlFile);
     } catch (e) {
        alert("inside catch::"+e.message);
     }
   } else {
     // code for Mozilla, Firefox, Opera, etc.
     parser=new DOMParser();
     xmlDoc=parser.parseFromString(xmlFile,"text/xml");

     //xmlDocElement=xmlDoc.documentElement;
   }

   //alert('loadXML value  '+xmlDoc)
   return xmlDoc;
}

</script>
Run Code Online (Sandbox Code Playgroud)

Dan*_*llo 16

看起来你已经碰到了同样的原产地政策.您必须使用相对路径,否则大多数浏览器将只返回一个空responseText.

以下Stack Overflow帖子可能也与您的问题有关:

作为一种可能的解决方法,您可以设置一个非常简单的反向代理(如果您使用的是Apache,则使用mod_proxy).这将允许您在AJAX请求中使用相对路径,而HTTP服务器将充当任何"远程"位置的代理.

在mod_proxy中设置反向代理的基本配置指令是ProxyPass.您通常会按如下方式使用它:

ProxyPass     /web-services/     http://third-party.com/web-services/
Run Code Online (Sandbox Code Playgroud)

在这种情况下,浏览器将请求,/web-services/service.xml但服务器将通过充当代理来服务于此http://third-party.com/web-services/service.xml.