Je tente d'avoir une page HTML mettant à jour une zone de texte avec le contenu d'un fichier texte toutes les secondes, en utilisant la fonction setInterval de JavaScript. Cependant, la fonction à l'intérieur de l'appel setInterval ne semble fonctionner qu'une seule fois.JavaScript setInterval ne s'exécute qu'une seule fois
Javascript:
// Send a GET request to the given location
function sendRequest(location, nonblocking) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", location, nonblocking);
xmlhttp.send();
return xmlhttp.responseText;
}
// Refresh the communication log
function refreshLog() {
document.getElementById("comm_log").value = sendRequest("src/log.txt", false);
}
window.setInterval(refreshLog, 1000);
La demande n'est pas asynchrone simplement parce que le fichier texte ne sera jamais long, ce qui est quelque chose que je suis en train de jeter ensemble rapidement.
HTML:
<html>
<head>
<style type="text/css">
textarea {
width: 98%;
height: 80%;
resize: none;
font-family: "Courier New";
}
</style>
<script type="text/javascript" src="src/script.js"></script>
</head>
...
<textarea id="comm_log" readonly></textarea>
...
</html>
Quelqu'un a des idées?
Une erreur s'est-elle produite dans votre console? –
S'il vous plaît ne pas le faire. Non seulement AJAX, JavaScript lui-même est un langage asynchrone basé sur les événements. N'essayez pas de l'éviter pour plus de commodité. – voithos
Pourquoi faites-vous synax AJAX? C'est le blocage et la pratique généralement mauvaise, sur la façon de l'éviter voir [cette réponse] (http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call/16825593# 16825593) –