Javascript XMLHttpRequest отправка не имеет никакого эффекта - PullRequest
0 голосов
/ 28 декабря 2010

Я пытаюсь передать файл в Javascript-пгм, используя XMLHttpRequest. Я наблюдаю, что XMLHttpRequest.send (null), похоже, не имеет никакого эффекта. Если я использую асинхронный XMLHttpRequest, как в приведенном ниже коде, сценарий завершается, и отображается текст в теле. Если я использую синхронный XMLHttpRequest, установив для 3-го аргумента XMLHttpRequest.open значение false (по умолчанию - true), сценарий также завершится и отобразит текст в теле. Таким образом, он ведет себя так, как будто вызов .send не имеет никакого эффекта.

Это, вероятно, означает, что у меня есть ошибка в коде или расположении файла. Код находится в файле HTML, а test.txt находится в том же каталоге. Я использую Firefox 3.6.13 для локального открытия файла HTML (т. Е. С помощью пункта меню Файл / Открыть файл ...).

Вот что я вижу в оповещениях:
Асинхронный (точка: готовность): 7: 0, 8: 0, 1: 1, 6, 9: 1
Синхронный: 7: 0, 8: 0, 9: 1

Буду признателен за любые предложения относительно того, что не так или как отладить его дальше.

<html>
<head>
<script type="text/javascript">
function test(data)
{
    alert(data);
}

function handlerQ()
{
    alert("point 1 readyState="+this.readyState);
    if(this.readyState == 4 && this.status == 200)
    {
        // so far so good
       alert("point 2");
       if(this.responseXML != null && this.responseXML.getElementById('test').firstChild.data)
       // success!
       {
           alert("point 3");
           test(this.responseXML.getElementById('test').firstChild.data);
       }
       else
       {
           alert("point 4");
           test(null);
       }
    }
    else if (this.readyState == 4 && this.status != 200)
    {
        // fetched the wrong page or network error...
       alert("point 5");
       test(null);
    }
    alert("point 6");
}

var clientQ = new XMLHttpRequest();
alert("point 7 readyState="+clientQ.readyState);
clientQ.onreadystatechange = handlerQ;
alert("point 8 readyState="+clientQ.readyState);
clientQ.open("GET", "test.txt",false); // asynchronous
alert("point 9 readyState="+clientQ.readyState);
clientQ.send(null);
alert("point 10 readyState="+clientQ.readyState);

</script>
</head>
<body>
This is the body
</body>
</html>

1 Ответ

0 голосов
/ 28 декабря 2010

Когда вы выбираете файл из локальной файловой системы, вам нужно сравнить статус результата с 0 для успеха, а не 200, что для HTTP-запросов.Также убедитесь, что ваш test.txt является XML-файлом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...