Я пытаюсь поразить сторонний URL, чтобы получить ответ XML и показать reposne в мою веб-страницу. Я получаю надлежащий ответ с состоянием как 200 и readystate как 4 в браузерах Safari и IE. Но В FF3.5 и Crome я получаю состояние XMLHTTPRequest как 0, и reponseText стал пустой строкой. Я попробовал много опций, пишущих нормальный код Ajax XMLHTTPRequest, а также использующих Прототип 1,5 версии js файл для этого запроса 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>
Похоже, вы столкнулись с той же политикой происхождения . Вы должны использовать относительный путь, иначе большинство браузеров просто вернут пустой responseText
.
Следующий пост о переполнении стека, вероятно, также связан с вашей проблемой:
В качестве одного из возможных обходных путей, вы можете установить очень простой обратный прокси (с помощью mod_proxy, если вы используете Apache). Это позволит вам использовать относительные пути в вашем AJAX-запросе, в то время как HTTP-сервер будет действовать как прокси к любому "удаленному" местоположению.
Основной конфигурационной директивой для установки обратного прокси в mod_proxy является ProxyPass. Обычно вы используете её следующим образом:
ProxyPass /web-services/ http://third-party.com/web-services/
В этом случае браузер будет запрашивать /web-сервисы/service.xml
, но сервер будет обслуживать это, действуя в качестве прокси на http://third-party.com/web-services/service.xml
.