par
Sohff » 22 juil. 2016, 09:03
Bonjour,
J'essaie d'implémenter un bouton qui mettrait à jour une variable de session en utilisant ajax et l'événement onclick.
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" href="style.css"/>
<script language="JavaScript">
function createInstance()
{
var req = null;
if (window.XMLHttpRequest)
{
req = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e)
{
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e)
{
alert("XHR not created");
}
}
}
return req;
};
function storing(data, element)
{
element.innerHTML = data;
}
function submitForm(element)
{
var req = createInstance();
req.onreadystatechange = function()
{
if(req.readyState == 4)
{
if(req.status == 200)
{
storing(req.responseText, element);
}
else
{
alert("Error: returned status code " + req.status + " " + req.statusText);
}
}
};
req.open("GET", "ajax-get.php", true);
req.send(null);
}
</script>
</head>
<body>
<p> <span id="storage"> </span></p>
<form name="ajax" method="post" action="">
<p>
<input type="button" value="Envoyer" onclick="submitForm(document.getElementById('storage'))">
</p>
</form>
<?php
if(isset($_POST['download'])){
$_SESSION['stop_upload']=0;
echo $_SESSION['stop_upload'];
while($_SESSION['stop_upload']==0){
traitements
echo $_SESSION['stop_upload'];
}
echo $_SESSION['stop_upload'];
}
</body>
Et voici le fichier ajax-get.php :
<?php
$_SESSION['stop_upload'] = 1;
echo $_SESSION['stop_upload'];
?>
J'ai réalisé des tests. Quand j'appuie sur le bouton pendant l'execution de la boucle, le fichier ajax-get.php me renvoie 1 mais le fichier principal continue de me renvoyer 0.
J'espère avoir été clair.
Merci d'avance pour vos aides et conseils.
PS : Je ne mets pas le code du formulaire qui me renvoi la méthode $_POST['download'] car sans importance pour mon problème.