2009-12-30 1 views
8

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

Любая помощь, как решить эту проблему или что именно вызывает эту проблему, будет с благодарностью оценена. Я также пытался выполнить мой код локально, а также развертывать на веб-сервере, но повторный ответ в 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> 
+0

Является ли «сторонним URL» в том же домене, что и страница с скриптом, выполняющим запрос? – CalebD

+0

Вы также должны использовать XMLHttpRequest для загрузки XML-файла, а не DOMParser или XMLDOM, который нестандартен и гораздо менее широко совместим. – bobince

ответ

16

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

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

В качестве одного из возможных решения проблемы, вы могли бы создать очень простой reverse proxymod_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.

 Смежные вопросы

  • Нет связанных вопросов^_^