XMLHTTPRequest.status возвращает 0, а responseText пуст в FireFox 3.5

Я пытаюсь найти сторонний URL-адрес, чтобы получить ответ XML и отобразить репозиторий на своей веб-странице. Я получаю правильный ответ со статусом 200 и с готовностью установить как 4 в браузерах IE и Safari. Но в FF3.5 и Crome я получаю статус XMLHTTPRequest как 0, а reponseText - пустую строку. Я перепробовал множество вариантов написания обычного кода Ajax XMLHTTPRequest, а также использования js-файла версии Prototype 1.5 для этого запроса ajax, но все же статус и reponseText в FF 3.5 остаются такими же, как 0 и пустая строка.

Любая помощь, как решить эту проблему или что именно вызывает эту проблему, будет принята с благодарностью. Я также пытался выполнить свой код локально, а также развернуть на веб-сервере, но ответ в FF такой же.

Ниже мой фрагмент кода

<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>

1 ответ

Похоже, вы столкнулись с той же политикой происхождения. Вы должны использовать относительный путь, иначе большинство браузеров просто вернут пустой responseText,

Следующий пост переполнения стека, вероятно, также связан с вашей проблемой:

В качестве одного из возможных обходных путей вы можете установить очень простой обратный прокси-серверmod_proxy, если вы используете Apache). Это позволит вам использовать относительные пути в вашем AJAX-запросе, в то время как HTTP-сервер будет действовать как прокси для любого "удаленного" местоположения.

Основная директива конфигурации для настройки обратного прокси в mod_proxy - это ProxyPass. Обычно вы используете его следующим образом:

ProxyPass     /web-services/     http://third-party.com/web-services/

В этом случае браузер будет запрашивать /web-services/service.xml но сервер будет служить этому, выступая в качестве прокси для http://third-party.com/web-services/service.xml,

Другие вопросы по тегам