即用型xmlRequest代码段在调用时返回状态代码0

时间:2009-02-24 14:36:39

标签: javascript xmlhttprequest widget feed dashcode

我正在创建一个非常基本的dashcode小部件。我正在使用Apple的自定义代码段:xmlRequest设置和xmlLoaded。以下是我的代码

function sendURL(){
    // Values you provide
    var textField = document.getElementById("searchqeue");  // replace with ID of text field
    var textFieldValue = textField.value;
    var feedURL = "feed://isohunt.com/js/rss/"+textFieldValue+"?iht=&noSL";                     // The feed to fetch

    // XMLHttpRequest setup code
    httpFeedRequest = new XMLHttpRequest();

    function loadedXML()
    {
        alert("xmlLoaded");
        if (httpFeedRequest.status == 200)
        {
            // Parse and interpret results
            // XML results found in xmlRequest.responseXML
            returnvalue = httpFeedRequest.responseText;
            alert(returnvalue);
            var textField = document.getElementById("resultarea");
            textField.value = returnvalue;
            // Text results found in xmlRequest.responseText
        }
        else
        {
            alert("Error fetching data: HTTP status " + httpFeedRequest.status);
        }
    }
    httpFeedRequest.onload = loadedXML();
    alert ("onload executed");

    //httpFeedRequest.overrideMimeType("text/html");
    httpFeedRequest.open("GET", feedURL);
    httpFeedRequest.setRequestHeader("Cache-Control", "no-cache");

    // Send the request asynchronously
    httpFeedRequest.send(null);
    alert("sent");
}

我希望将其全部保存在一个功能中以保持简单。我可以将xmlLoaded函数和sendURL函数分开,但对我来说这更清楚。

我在错误控制台中找到的代码:

  

xmlLoaded(在loadedXML函数第一行内)

     

获取数据时出错:HTTP状态0(来自loadedXML函数的错误消息)

     执行

onload(httpFeedRequest.onload = loadedXML();下面的行)

     

发送(函数的最后一行)

Thes esnippets本身带有破折号码,所以我猜问题就在于我的网址。这是一个feed://页面而不是html或xml页面。但是由于feed也是xml,我虽然可以使用xmlRequest。此外,使用http://而不是feed://调用同一页面也会返回相同的内容。

httpFeedRequest.responseText返回 “” (空字符串)

httpFeedRequest.responseXML返回 null

任何帮助都将超过赞赏!

1 个答案:

答案 0 :(得分:1)

你可能现在已经对它进行了排序,但有几件事情。 httpFeedRequest.status == 200用于http响应。如果您正在调用Feed,则它可能不会给出相同的数字响应。如果您使用Safari并进入开发人员模式,然后在您的脚本上设置断点并通过它进行操作,您可以看到回来检查这一点的响应。 您也没有检查请求的就绪状态 - if(myRequest.readyState == 4)

准备好了 数; 0表示未初始化,open()尚未被调用; 1表示加载,send()尚未调用; 2表示已加载,send()已被调用,并且标题/状态可用; 3表示交互式,responseText保存部分数据; 4表示已完成。

所以通常检查4。

在httpFeedRequest.open(“GET”,feedURL)中;您可以尝试添加true参数来告诉请求它是异步的httpFeedRequest.open(“GET”,feedURL,true);