Comment utiliser SetInterval pour répéter les appels AJAX à partir de la page AJAX elle-même?
-
12-11-2019 - |
Question
J'ai enregistré cela en tant que fichier ajax.js:
function sendAjax(type, str)
{
var xmlhttp;
if (str=="")
{
document.getElementById("txtResp").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtResp").innerHTML=xmlhttp.responseText;
}
}
switch(type)
{
case 'search':
xmlhttp.open('GET','mysql_process_search.php?q='+str,true);
break;
case 'add':
xmlhttp.open("GET","mysql_process_event.php?q="+str,true);
break;
}
xmlhttp.send();
}
Fondamentalement, j'essaie d'utiliser la fonction intégrée SetInterval () pour répéter tout ce que les variables URL contiennent.
Dans un sens, j'en ai besoin pour exécuter toutes les 5 secondes après avoir tfonction Sendajax (Type, Str) est appelé (comme dans le bref):
case 'add':
xmlhttp.open("GET","mysql_process_event.php?q="+str,true);
break;
}
xmlhttp.send();
Je pourrais juste définir où j'écris la fonction sur un intervalle: c'est-à-dire
setInterval( "sendAjax('message', '123')", 5000 );
sendAjax('message','123')
Mais j'ai plusieurs, plusieurs endroits à travers mon code où cette fonction est écrite et cela ne fonctionnera pas s'il est contenu dans une action clé et si l'instruction car elle ne s'exécutera qu'une seule fois:
$('#searchbar').live('keyup',function() {
eInput = $(this).val();
if (eInput.length > 1) {
setInterval( "sendAjax('message', '123')", 5000 );
sendAjax('message','123')
}
});
// Cette fonction ne fonctionne pas.
Si quelqu'un peut m'aider à fixer la dernière fonction, ou simplement pour inclure le SetInterval dans le fichier ajax.js lui-même, je l'apprécierais grandement.
Cordialement, Taylor
Pas de solution correcte