Maison >développement back-end >tutoriel php >Comment implémenter une fonction de chargement ajax simple en PHP

Comment implémenter une fonction de chargement ajax simple en PHP

墨辰丷
墨辰丷original
2018-05-29 10:07:421834parcourir

Cet article présente principalement la méthode d'implémentation de la fonction de chargement ajax simple en PHP. Il analyse le principe, les compétences opérationnelles et les précautions associées du chargement ajax sous forme d'exemples. Les amis dans le besoin peuvent s'y référer

Les détails sont les suivants :

var xmlHttp;
function createXmlHttpReq() {
  if(window.ActiveXObject) {
    xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
  } else if(window.XMLHttpRequest) {
    xmlHttp = new XMLHttpRequest();
  }
}
function funMy(url) {
  createXmlHttpReq();
  try {
    xmlHttp.onreadystatechange = cb;//一定要在open()前,下边会有说明。在此处犯错了
    xmlHttp.open("GET","for.php?id="+url,true);
    xmlHttp.send(null);
  } catch(e) {
    alert("您访问的资源不存在");
  }
}
//回调函数
function cb() {
  if(xmlHttp.readyState==1) {
    alert("1-------------->");
    //在Google Chrome 浏览器里不显示loading图片,三秒后显示内容,问题已解决,下边有说明
    document.getElementById(&#39;ajax&#39;).innerHTML = "<img src=loading2.gif>";
    //document.getElementById(&#39;ajax&#39;).innerHTML = "Loading......";
  }
  if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
      var data = xmlHttp.responseText;
      document.getElementById(&#39;ajax&#39;).innerHTML = data;
  }
}

Lors des tests, je suis resté bloqué sur Chrome. Veuillez consulter l'explication ci-dessous :

Si vous l'écrivez de cette façon, vous ne recevrez pas de réponse de .readyState==1

Car 1 signifie que .open() a été appelé

Mais .open() est appelé avant l'événement .onreadystatechange, il devrait donc vous être impossible de recevoir une réponse de .readyState==1

Par conséquent, si vous souhaitez recevoir .readyState= =1 =>.onreadystatechange, vous devez Avant .open()

Alors pourquoi le recevez-vous parfois ?

Parce que vous utilisez la même variable globale... Lors d'opérations continues, cela peut arriver car une requête xhr est toujours en attente de php. Pour l'initialiser à nouveau et déclencher

, vous devez d'abord décider de la méthode de traitement des données onreadystatechange, puis envoyer les données à traiter open()

Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’apprentissage de chacun.


Recommandations associées :

Configuration de la boîte de chargement globale Ajax (Effet de chargement)

chargementEffet d'attente avant qu'Ajax ne renvoie les données (tutoriel graphique)

Ajax implémente l'effet de chargement

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn