готовый к использованию фрагмент xmlRequest возвращает код состояния 0 при вызове - PullRequest
0 голосов
/ 24 февраля 2009

Я создаю очень простой виджет кода. Я использую настроенные фрагменты от 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 ();)

отправлено (последняя строка функции)

Эти esnippets поставляются с самим dashcode, так что я думаю, проблема в моем URL. Это страница feed: // вместо страницы html или xml. Но так как каналы тоже xml, я мог бы просто использовать xmlRequest. Кроме того, вызов той же страницы с http: // вместо feed: // возвращает то же самое.

httpFeedRequest.responseText возвращает "" (пустая строка)

httpFeedRequest.responseXML возвращает ноль

любая помощь будет более чем оценена!

1 Ответ

1 голос
/ 21 декабря 2009

вы, наверное, уже разобрали это, но пару вещей. httpFeedRequest.status == 200 для ответа http. если вы вызываете фид, он может не давать такой же числовой ответ. Если вы используете 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);

...