Barre de progression de l'AJAX et PHP

Je veux créer une barre de progression pour une tâche de côté serveur ( en php )

À des fins d'apprentissage, l'exemple et la tâche serait très simpliste.
Je voudrais avoir un champ de texte sur la page du client, lire un number, la passer au script php avec ajax et faire calculer la somme de tous les nombres from 0 to number ( simpliste tâche ce serait prendre un certain temps pour les grands nombres, juste pour simuler un travail côté serveur)

dans le .fichier html je voudrais créer un timer qui permettrait d'appeler une fonction à chaque n secondes d'obtenir l'indice que ma boucle for obtenu et mettre à jour une barre de progression.

Ma question est :

Est-il possible d'avoir dans le même fichier php deux fonctions , et comment puis-je appeler une fonction spécifique avec ajax : l'une qui pourraient bloquer la boucle de number et un autre que j'appellerais pour obtenir le courant de l'indice de la boucle for obtenu.

Le code que j'ai pour l'instant :

<!DOCTYPE html>
<html>
<head>
<script>
function myTimer()
{
var xmlhttp;
if (window.XMLHttpRequest)
{//code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{//code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("percentageDiv").innerHTML=xmlhttp.response;
alert(xmlhttp.response);
}
}
xmlhttp.open("GET","getter.php",true);
xmlhttp.send();
}
function loop(){
var loop_index = document.getElementById("loop_nr").value;
var xmlhttp;
if (window.XMLHttpRequest)
{//code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{//code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("sumDiv").innerHTML="Total sum = " + xmlhttp.response;
clearInterval(myVar);
}
}
xmlhttp.open("GET","server_side.php?nr="+loop_index,true);
xmlhttp.send();
var myVar=setInterval(function(){myTimer()},1000);
}
</script>
</head>
<body>
<div id="percentageDiv"> Percentage div</div>
<div id="sumDiv"></div>
<input type="text" id="loop_nr">
<input type="submit" onclick="loop()">
</body>
</html>

server_side.php

<?php
session_start();
$index=$_GET["nr"];
$progress = 0 ;
$sum = 0 ;
for ($i = 1; $i <= $index; $i++) {
$sum = $sum + $i;
$progress++;
$_SESSION['progress'] = $progress;
}
echo $sum;
?>

getter.php

<?php
session_start();
$progress = $_SESSION['progress'];
echo $progress;
?>

Merci!

Avez-vous fait des appels ajax, php avant? Ce n'est pas différent d'elle, seulement que vous avez pour enregistrer la valeur de l'avancement dans la $_SESSION à persister.
Je suis de nouveau à ajax et php, je vais poster le code que j'ai jusqu'ici
Je viens de penser à ça. Ma question est comment puis-je appeler avec ajax une fonction spécifique de php?
Je pense que le PHP que vous avez est plus important que l'AJAX. Le poster aussi.

OriginalL'auteur Iulian Rosca | 2013-12-08