2015-09-24 4 views
0

Я пытался выяснить, как это сделать.Ajax сохраняет сайт на сайте Загрузка

var request; 

if(window.XMLHttpRequest){ 
    request= new XMLHttpRequest(); 
}else{ 
    request = new ActiveXObject("Microsoft.XMLHTTP"); 
} 


var handleStateChange = function() { 
    switch (request.readyState) { 
     case 0 : // UNINITIALIZED 
     case 1 : // LOADING 
     case 2 : // LOADED 
     case 3 : // INTERACTIVE 
     break; 
     case 4 : // COMPLETED 
     break; 
     default: alert("error"); 
    } 
} 


/*request.onreadystatechange=handleStateChange;*/ 
request.onreadystatechange = function(){ 
    if((request.status === 200) && (request.readyState === 4)){ 
     console.log(request); 
     document.writeln(request.responseText); 
    } 

} 
request.open('GET','data.txt'); 
request.send(); 

я нашел подобные проблемы здесь в StackOverflow, но пока нету понял, почему его вести себя таким образом (Im новое Ajax).

Так возникает проблема, когда у меня есть request.open('GET','data.txt');, что заставляет страницу оставаться в режиме загрузки, а console.log ничего не показывает.

я Google вокруг и нашел в StackOverflow этого решения request.onreadystatechange=handleStateChange;

, который, кажется, решение данной проблемы. к сожалению, он переопределяет request.onreadystatechange = function(){}. Консоль работает, а содержимое data.txt не будет отображаться в Интернете.

Если я прокомментирую это, содержимое отображается в Интернете, но страница снова загружается.

Я понял, что это что-то связано с readyState, и что к тому времени, когда он достиг 4, responseText пуст. Но как я могу получить его, чтобы показать содержимое и console.log?

Заранее спасибо за ваше время :)

+0

@FrebinFrancis действительно, почему это хорошо, и это XMLHttpRequest плохо? по другим причинам, что синтаксический сахар. – Jai

+0

@Metalbreath, зачем вам это нужно: 'handleStateChange' вообще. – Jai

+0

видно, что при использовании помощников Ajax вы получите большой контроль над HTTP-HTTP-запросами, потому что они уже сделали это для вас. –

ответ

0

но с ним консоль работает без предъявления каких-либо результатов на веб-сайте

В соответствии с Вашим комментарием, я могу предложить вам, что вы используете неправильный метод. В javascript нет метода writeln, вместо этого вам предлагается использовать .write()(хотя и не рекомендуется).

изменения к этому:

document.write(request.responseText); 

или лучше:

document.body.innerHTML = request.responseText; // use this response contains html tags 

или:

document.body.textContent = request.responseText; // use this response is just text 
+0

это хорошая информация. Спасибо. Я даже не заметил. Похоже, что моя проблема была вызвана firebug. многие получают эту проблему. Теперь он работает. Надеюсь, так оно и останется :) – Metalbreath

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

  • Нет связанных вопросов^_^