[RESOLU] Simplification de requete Ajax

Eléphanteau du PHP | 19 Messages

26 sept. 2016, 09:35

Bonjour à tous,
Je me demandé si il etait possible de simplifier ma requete ajax sans passer sur 2 page differentes,
et apres comment recupere les donnes transmises.

Voici mon code :
<div id="service-1" class="service">
                <div class="fonction">Nom du service</div>
                <div class="descript-fonction">Description du service</div>
                <div class="num-fonction">Tel: 00.00.00.00.00 - Fax : 00.00.00.00.00</div>
                <p><a data-toggle="modal" href="#inline" data-target="#inline" class="modalbox" rel="1">Contacter le service</a></p>
            </div>

<div id="inline">
// le formulaire
</div>
Le script :
$(".modalbox").fancybox(); 
$(".modalbox").click(function(oEvt){
    oEvt.preventDefault();
    var Id=$(this).attr("rel");
        $(".modal-header").fadeIn(1000).html('<div style="text-align:center; margin-right:auto; margin-left:auto">Patientez...</div>');
        $.ajax({
            type:"GET",
            data : "Id="+Id,
            url:"reponse.php",
            error:function(msg){
                $(".modal-header").addClass("tableau_msg_erreur").fadeOut(800).fadeIn(800).fadeOut(400).fadeIn(400).html('<div style="margin-right:auto; margin-left:auto; text-align:center">Impossible de charger cette page</div>');
            },
            success:function(data){
                $(".modal-header").fadeOut(20);
				$(".h2popup").html(data);
				
            }
        });
		$.ajax({
            type:"GET",
            data : "Id="+Id,
            url:"reponse2.php",
            success:function(data){
                $("#idservice").html('<input type="hidden" id="serviceid" name="serviceid" value="'+data+'" >');
            }
        });
    });
    </script>
et le contenu des pages reponse.php et reponse2.php
if ($_REQUEST["Id"]=='1')
	{
	$service2="le nom du service";
	}
	elseif ($_REQUEST["Id"]=='7')
	{
	$service2="le nom du service";
	}
	
	echo "Contacter ".$service2;
echo $_GET["Id"];

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 sept. 2016, 11:28

salut,

retourne des données en JSON tu pourras ne faire qu'une seule requête.

Ceci dit la seconde requête semble ne service à rien vue que tu as déjà l'id
remplace
$.ajax({
type:"GET",
data : "Id="+Id,
url:"reponse2.php",
success:function(data){
$("#idservice").html('<input type="hidden" id="serviceid" name="serviceid" value="'+data+'" >');
}
});
});

par simplement $("#idservice").html('<input type="hidden" id="serviceid" name="serviceid" value="'+id+'" >');

Pour le coté JSON (histoire d'avoir des données structurées)
<?php
$data = new StdClass();

$data->header = 'le nom du service';
$data->id = 42;
$data->description = 'La description';

echo json_encode($data);
et en JS tu indiques, dans la requête, que tu récupères du JSON et ensuite tu peu accéder aux données simplement :
data.header
data.id
data.description
// ...
@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 19 Messages

26 sept. 2016, 11:57

Merci de ton aide