2010-12-28 6 views
0

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

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

Это то, что я вижу в предупреждений:
Асинхронный (точка: readyStatus): 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> 

ответ

0

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

Смежные вопросы