【问题标题】:javascript XMLHttpRequest requestXML is nulljavascript XMLHttpRequest requestXML 为空
【发布时间】:2010-09-03 17:03:42
【问题描述】:

我正在尝试从 url 中获取 xml 文档,然后对其进行解析。我可以在浏览器上很好地打开它,但它似乎无法通过我的 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.


});

【问题讨论】:

  • 脚本是否在jojo.theone.net上运行?

标签: javascript null xmlhttprequest response


【解决方案1】:

您在回调方法中使用data 作为参数名称,但将回调方法调用为callback(request, request.status)。结果是请求对象现在位于名为“data”的 var 中,并且根本没有引用 request.status。

试试

downloadUrl("http://jojo.theone.net/survey.xml", function(request, status) {   
    alert("Inside downloadURL");
    var xml = request.responseXML;
    alert(xml); 
    alert(request.responseText);
});

【讨论】:

    【解决方案2】:

    尝试使用data 值而不是request 对象。此外,最好使用 Mootools 或 jQuery 等框架来执行 AJAX 请求——您将获得更兼容和可预测的界面。
    另请注意,如果您请求的 url 的服务器、端口和协议与发出请求的脚本不同,则请求将失败。

    【讨论】:

    • URL 的端口确实与脚本不同。有没有办法解决这个问题?
    • 否——这将被视为一个严重的安全漏洞,因此没有浏览器会这样做。您必须在服务器端制作一个路由器并解决一些将被它重写到不同端口的url。
    猜你喜欢
    • 2011-06-24
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    相关资源
    最近更新 更多