Я пытаюсь передать файл в 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>