我正在创建一个非常基本的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
任何帮助都将超过赞赏!
答案 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);