javascript XMLHttpRequest requestXML является нулевым - PullRequest
0 голосов
/ 03 сентября 2010

Я пытаюсь получить документ XML с URL-адреса, а затем проанализировать его.Я могу открыть его в браузере, но он не работает через мой javascript.Кто-нибудь может мне помочь?

function downloadUrl(url, callback) {       
     var request = window.ActiveXObject ?
         new ActiveXObject('Microsoft.XMLHTTP') :
         new XMLHttpRequest;

     request.onreadystatechange = function() {
       if (request.readyState == 4) {
         request.onreadystatechange = function(){};
         callback(request, request.status);
       }
     };

    request.open('GET', "url", true);       
    request.send(null);
}   
downloadUrl("http://jojo.theone.net/survey.xml", function(data) {   
    alert("Inside downloadURL"); // shows up            
    var xml = request.responseXML;
    alert(xml);  // Doesn't even show up.
        alert(request.responseText); // Doesnt show up.


});

Ответы [ 2 ]

2 голосов
/ 03 сентября 2010

Вы используете data в качестве имени параметра в методе обратного вызова, но вызываете метод обратного вызова как callback(request, request.status).В результате объект запроса теперь находится в var, называемом «data», а на request.status вообще нет ссылки.

Try

downloadUrl("http://jojo.theone.net/survey.xml", function(request, status) {   
    alert("Inside downloadURL");
    var xml = request.responseXML;
    alert(xml); 
    alert(request.responseText);
});
0 голосов
/ 03 сентября 2010

Попробуйте использовать data значение, а не request объект.Также лучше использовать некоторые фреймворки, такие как Mootools или jQuery, для выполнения AJAX-запросов - вы получите более совместимый и предсказуемый интерфейс.
Также обратите внимание, что запрос не будет выполнен, если запрашиваемый URL имеет другой сервер, порти протокол, чем сценарий, который делает запрос.

...