5 votes

Montrez chaque résultat un par un

J'ai un code qui augmente un paramètre de l'URL dans une while boucle jusqu'à $i est égal à 10. Dans ce cas, il affichera tous les nombres jusqu'à 10 (car c'est à ce moment-là que l'on peut voir l'évolution de la situation). $i arrêts croissants) - dans ce cas, ce serait 1, 2, 3, 4, 5, 6, 7, 8, 9.

Le problème est que ce n'est que lorsque $i est égal à 10, est-ce qu'il affiche 1, 2, 3, 4, 5, 6, 7, 8, 9 - j'ai besoin qu'il affiche les nombres au fur et à mesure (plutôt que d'attendre que $i pour être égal à 10 !).

<div id="here"></div>

<script>
$(document).ready(function(){
        $.ajax({
            type: "POST",
            url: "test2.php",
            success: function(data) { $("#here").html(data);  }
        });
});
</script>

test2.php :

while($content = file_get_contents('https://www.example.com?id='.$i)) {
   if($i !== 10) {
      echo $i;
   }else{
      break;
   }
   $i++;
}

1voto

guest271314 Points 2718

Vous pouvez alternativement demander chaque fichier dans un ordre séquentiel en utilisant .queue() , .append()

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

$({}).queue("ajax", $.map(arr, function(item, i) {
  return function(next) {
    return $.ajax({
              type: "POST",
              url: "test2.php",
              data: {n:item}
           })
           .then(function(data) { 
             $("#here").append(data);  
             next();
           });

  }
})).dequeue("ajax")

php

if (isset($_POST["n"])) {
  $content = file_get_contents("https://www.example.com?id=" . $_POST["n"]);
  echo $content
}

0voto

Ben Shoval Points 1288

Il n'existe pas de moyen stable pour qu'un script PHP génère une sortie jusqu'à ce que le script se termine.

Si vous avez besoin d'un compte à rebours, vous pouvez placer la boucle while dans votre Javascript et faire en sorte qu'elle appelle le script de PHP avec quelque chose comme :

test2.php?i=1

puis

test2.php?i=2

etc.

0voto

Akshay Points 1989

Je pense vraiment async vous aiderait ici. Pourriez-vous essayer ce code ?

<script>
$(document).ready(function(){
        $.ajax({
            type: "POST",
            url: "test2.php",
            async: false,
            success: function(data) { $("#here").html(data);  }
        });
});
</script>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X