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
,