J'ai trouvé la réponse, enfin, je crois.
Dans la fonction login_clicked(),la commande [buffer.location.replace("check_login.php...] renvoi dans le buffer cette réponse:
print <<<eot
<script language="JavaScript">
parent.document.getElementById('btn_submit').value = 'buz'; //***Juste pour un test
parent.document.getElementById('may_sub').value = '0';
</script>
eot;
Le problème, c'est que l'évaluation du tag [may_sub] est faite trop rapidement, avant même que [buffer.location.replace] ait terminé.
J'ai expérimenté en mettant un autre bouton sur la page qui affichait [alert()] la valeur de [may_sub] après le reload, et elle était bien changée.
Le hic, c'est que javascript exécute les commandes de [function login_clicked()] à la file, sans attendre la terminaison des commandes précédentes, c'est pourquoi ça échoue...
J'ai peux-être trouvé une façon de contourner le problème, (sans ajax) mais encore là, je suis coincé (merde). On pourrait ajouter une fonction qui attendrait un flag avant de poursuivre avec les autres procédures comme suit:
<?php
?>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<input type="hidden" id="test_val" value="0" />
<input type="button" id="btn" name="btn" value="start" onclick="javascript:check_stat(document.getElementById('test_val').value, display())" />
<input type="button" id="btn1" name="btn1" value="change" onclick='change_state()' />
<script type="javascript">
//________________________________________________________
// Verify the state of a hidden tag and send the next
// procedure when true, else, wait some time
//________________________________________________________
function check_state(variable, other_func){
if (variable){
other_func();
} else {
setTimeout('check_state()', 500);
}
}
//________________________________________________________
// Change the state of the hidden tag
//________________________________________________________
function change_state(){
document.getElementById('test_val').value = 1 ;
}
//________________________________________________________
// Display when the state of the hidden tag has changed
//________________________________________________________
function display(){
alert('change made');
}
</script>
</body>
</html>
Le problème, c'est que je coince sur un "object expected" depuis au moins 3 heures sur le deuxième <input>, je ne peux donc pas vérifier si ma nouvelle solution fonctionne. Je suis certain que c'est con comme erreur, mais je n'en peux plus...
Un coup de main serait bien apprécié...
En passant, la couleur, c'est mieux ?

J'ai trouvé la réponse, enfin, je crois.
Dans la fonction login_clicked(),la commande [buffer.location.replace("check_login.php...] renvoi dans le buffer cette réponse:
print <<<eot
<script language="JavaScript">
parent.document.getElementById('btn_submit').value = 'buz'; //***Juste pour un test
parent.document.getElementById('may_sub').value = '0';
</script>
eot;
Le problème, c'est que l'évaluation du tag [may_sub] est faite trop rapidement, avant même que [buffer.location.replace] ait terminé.
J'ai expérimenté en mettant un autre bouton sur la page qui affichait [alert()] la valeur de [may_sub] après le reload, et elle était bien changée.
Le hic, c'est que javascript exécute les commandes de [function login_clicked()] à la file, sans attendre la terminaison des commandes précédentes, c'est pourquoi ça échoue... :-(
J'ai peux-être trouvé une façon de contourner le problème, (sans ajax) mais encore là, je suis coincé (merde). On pourrait ajouter une fonction qui attendrait un flag avant de poursuivre avec les autres procédures comme suit:
[b][color=#FF0000]<?php
?>[/color]
<html>
<head>
<title>Untitled</title>
</head>
<body>
<input type="hidden" id="test_val" value="0" />
<input type="button" id="btn" name="btn" value="start" onclick="javascript:check_stat(document.getElementById('test_val').value, display())" />
<input type="button" id="btn1" name="btn1" value="change" onclick='change_state()' />
<script type="javascript">
[color=#000080]//________________________________________________________
// Verify the state of a hidden tag and send the next
// procedure when true, else, wait some time
//________________________________________________________
[/color]function check_state(variable, other_func){
if (variable){
other_func();
} else {
setTimeout('check_state()', 500);
}
}
[color=#000080]//________________________________________________________
// Change the state of the hidden tag
//________________________________________________________
[/color]function change_state(){
document.getElementById('test_val').value = 1 ;
}
[color=#000080]//________________________________________________________
// Display when the state of the hidden tag has changed
//________________________________________________________
[/color]function display(){
alert('change made');
}
</script>
</body>
</html>[/b]
Le problème, c'est que je coince sur un "object expected" depuis au moins 3 heures sur le deuxième <input>, je ne peux donc pas vérifier si ma nouvelle solution fonctionne. Je suis certain que c'est con comme erreur, mais je n'en peux plus... :oops:
Un coup de main serait bien apprécié... :priere:
En passant, la couleur, c'est mieux ? :-)