Derrière ce titre énigmatique, je m'interroge sur le fait de pouvoir récupérer , avec Ajax, des variables envoyées.
Apparemment je ne récupère que du texte (responseText) ou du xml (responseXML) mais si je voulais récupérer des paramètres passés, je peux?
voir le code ci-joint (c'est une maquette).
en gros j'ai 4 cases à cocher, et dans $result01[0]->task_1; ..2...3...4 il y a une valeur 0 ou 1 (extrait d'une base mysql) qui détermine si la case et cochée ou pas.
J'ai un bouton (#unlock-task) qui me permet de rendre modifiable les cases à cocher.
Par ajax de jQuery, quand je coche une case, j'envoie un champ (task_1, task_2, task_3 ou task_4) ainsi que sa valeur 'avant cochage' (data-state).
Le fichier update_task.php lance donc une requête (avec new_valeur) pour inverser au final la valeur (0 ou 1).
ça fonctionne parfaitement au niveau Mysql... mais je voudrais récupérer data-field et data-set pour mettre à jour les valeurs dans mon html sans avoir à recharger la page web, et je sais pas comment récupérer ces deux valeurs..
Peut-être que c'est trop évident et que je le vois pas...
Modifié par lionel_css3 (01 Feb 2017 - 22:29)
Apparemment je ne récupère que du texte (responseText) ou du xml (responseXML) mais si je voulais récupérer des paramètres passés, je peux?
voir le code ci-joint (c'est une maquette).
en gros j'ai 4 cases à cocher, et dans $result01[0]->task_1; ..2...3...4 il y a une valeur 0 ou 1 (extrait d'une base mysql) qui détermine si la case et cochée ou pas.
J'ai un bouton (#unlock-task) qui me permet de rendre modifiable les cases à cocher.
Par ajax de jQuery, quand je coche une case, j'envoie un champ (task_1, task_2, task_3 ou task_4) ainsi que sa valeur 'avant cochage' (data-state).
Le fichier update_task.php lance donc une requête (avec new_valeur) pour inverser au final la valeur (0 ou 1).
ça fonctionne parfaitement au niveau Mysql... mais je voudrais récupérer data-field et data-set pour mettre à jour les valeurs dans mon html sans avoir à recharger la page web, et je sais pas comment récupérer ces deux valeurs..
Peut-être que c'est trop évident et que je le vois pas...
<div id="planning-live" class="container">
<div class="row">
<div class="col-xs-2">
<button id="unlock-task" type="submit" class="btn btn-default">Modifier une tâche</button>
</div>
<div class="col-xs-10">
<div id="task-group" class="form">
<div class="checkbox task-box">
<label>
<input type="checkbox"
disabled data-field="task_1"
data-state="<?php echo $result01[0]->task_1; ?>"
data-id="<?php echo $result01[0]->id_task; ?>"
<?php echo ($result01[0]->task_1 == 1 ? "checked":""); ?> > Task 1
</label>
</div><!-- /checkbox -->
<div class="checkbox task-box">
<label>
<input type="checkbox"
disabled data-field="task_2"
data-state="<?php echo $result01[0]->task_2; ?>"
data-id="<?php echo $result01[0]->id_task; ?>"
<?php echo ($result01[0]->task_2 == 1 ? "checked":""); ?> > Task 2
</label>
</div><!-- /checkbox -->
<div class="checkbox task-box">
<label>
<input type="checkbox"
disabled data-field="task_3"
data-state="<?php echo $result01[0]->task_3; ?>"
data-id="<?php echo $result01[0]->id_task; ?>"
<?php echo ($result01[0]->task_3 == 1 ? "checked":""); ?> > Task 3
</label>
</div><!-- /checkbox -->
<div class="checkbox task-box">
<label>
<input type="checkbox"
disabled data-field="task_4"
data-state="<?php echo $result01[0]->task_4; ?>"
data-id="<?php echo $result01[0]->id_task; ?>"
<?php echo ($result01[0]->task_4 == 1 ? "checked":""); ?> > Task 4
</label>
</div><!-- /checkbox -->
</div><!-- /form -->
</div>
</div>
</div><!-- /container -->
$(document).ready(function(){
if (document.getElementById("planning-live")) {
/* ----------------------------------------- */
/* déblocage edition task */
/* ----------------------------------------- */
// click surle bouton modifier une tâche
$("#unlock-task").on('click', function() {
//console.log('hi');
$this = $(this)
$this.hide();
$(".task-box input").prop('disabled', false);
});
/* ----------------------------------------- */
/* modifier une case à cocher d'une tâche */
/* ----------------------------------------- */
$(".task-box input").on('change', function() {
$this = $(this)
var champ_a_modifier = $this.data('field');
var valeur_actuelle = $this.data('state');
var new_valeur = (valeur_actuelle == 0 ? 1 : 0);
var id_to_change = $this.data('id');
$.ajax({
url :"update_task.php",
data : { the_field : champ_a_modifier,
the_value : new_valeur,
the_id : id_to_change
},
complete : function(xhr, result){
var response = xhr.responseText;
console.log(xhr);
if (result == 'success') {
$("#show-result").html('Maj effectuée');
}
}
});
});
} // fin getElementById("planning-live")
});
<?php
try {
$db = new PDO('mysql:host=localhost;dbname=mkdatetest', 'root', '',array(
PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8',
PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
));
} catch (PDOException $e) {
echo $e->getMessage();
}
$data = array(
'id'=>$_REQUEST["the_id"],
'valeur'=>$_REQUEST["the_value"]
);
$sql = "UPDATE tasks_group
SET ". $_REQUEST["the_field"] ." = :valeur
WHERE id_task=:id";
$req = $db->prepare($sql);
$retour = $req->execute($data);
echo $retour;
?>
Modifié par lionel_css3 (01 Feb 2017 - 22:29)