Requette jquery ajax me renvoi une donnée bizare

Fermé
rfrfrf - Modifié par rfrfrf le 24/04/2016 à 17:43
 rfrfrf - 29 avril 2016 à 18:42
Salut,

Quand je clique sur une image pour exécuter une fonction php à l'aide d' une requête jquery ajax j'ai une donnée bizarre comme réponse

voilà mon code:

index.php

<img style="width: 124px; height: 124px;" id="img"
onclick="total()" alt="" src="imgage1.gif">
<div id="score" style="font-size: 14px;"></div>
<br><script>
$('#img').click(function() {
var url = 'traitement.php';
$.post(url,{ nom: 'moi'}, function(data){
$("#score").html(data);
});
});
</script>


traitement.php

<?php
function total()
{
if (isset($_POST["nom"]))
{
$a=$_POST["nom"];
echo $a;
}}
?>



voilà la réponse que j'ai recu:


{\rtf1\fbidis\ansi\ansicpg1256\deff0\deflang6145{\fonttbl{\f0\fswiss\fcharset0 Arial;}} {\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\ltrpar\lang1036\f0\fs20 \par }

Merci pour votre aide

6 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
24 avril 2016 à 18:30
Bonjour,

rien d'étrange réellement...
Ta page ... traitement.php tu n'y fais rien dedans !
Tu as une fonction... mais tu ne l'appelles pas .....

Modifie le code comme ceci
<?php
//---------------------------//
 //récuperation propre des valeurs :
//---------------------------//
$nom = !empty($_POST["nom"]) ? $_POST["nom"] : NULL;

//---------------------------//
// LES FONCTIONS 
//---------------------------//

 function total($nom){
     $a=$nom;
     return $a;
}

//---------------------------//
// Début du programme: 
//---------------------------//
 
//on appel la fonction :
echo total($nom);

?>


NB: j'ai laissé ta fonction "total" ;..mais bon... elle ne sert à rien en l'état.
C'est juste pour l'exemple... que tu saches écrire et utiliser une fonction.


0
Merci pour ta réponse

l'appel de la fonction total() se fait ici:

<img style="width: 124px; height: 124px;" id="img"
onclick="total()" alt="" src="imgage1.gif">

le but de ce que j'ai fais c'est d'apprendre a envoyer des variables javascript et travailler avec en php en se basant sur ajax et jquery pour le transfert donc j'ai fait un petit exemple qui envoi une variable javascript nom='moi' au serveur en cliquant sur une image et exécutant une fonction total() en php avec la variable nom ='moi' que je dois avoir comme réponse à ma requette ajax jquery.
donc je dois avoir dans la (div id:score) le text 'moi'

et le code php çi dessous est pour savoir si la variable nom='moi' a été bien reçu c'est pour cela que je l'ai mis dans une autre variable $a qui sera retourné comme réponse à la requête ajax jquery et je l'ai afficher dans une div $("#score").html(data); et le data sera 'moi' .


<?php
function total()
{
if (isset($_POST["nom"]))
{
$a=$_POST["nom"];
echo $a;
}}
?>
0
j'ai changé le code et quand je met une alert(data.msg) pour avoir la réponse de la requête j'ai l'erreur suivante " undefined "

voici le code :

<img style="width: 124px; height: 124px;" id="img"
onclick="total()" alt="" src="image1.gif">
<div id="score" style="font-size: 14px;"></div>

<script>

$(function(){
$('#img').click(function() {
var url = 'http://127.0.0.1/traitement.php';
$.post(url,{ nom: 'moi'}).done(function(data){
alert(data.msg);
$("#score").html(data.msg);
}).fail(function(){
console.log("erreur");
});
});
});

</script>


php:

<?php
header("Content-type: application/json");



if (isset($_POST["nom"])) {
echo json_encode(["msg"=>$_POST["nom"]]);
} else {
echo json_encode(["msg"=>"erreur"]);
}


?>
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 24/04/2016 à 23:16
Comme je te l'ai indiqué dans mon message précédent ..... on récupère PROPREMENT les variables AVANT de les utiliser !

Donc ton fichier traitement.php devient :
<?php
$nom = !empty($_POST["nom"]) ? $_POST["nom"] : NULL;

$result = array();

if($nom){
  $result['msg'] = $nom;
}else{
   $result['msg'] = "Erreur";
   $result['post'] = $_POST;
}

echo json_encode($result);

?>

et dans ton javascript, essaye de faire un console.log pour voir ce que ta variable contient :

$.post(url,{ nom: 'moi'})
   .done(function(data){
      console.log(data);
      alert(data.msg);
      $("#score").html(data.msg);
     })
    .fail(function(){
        console.log("erreur");
     });
0
salut,

oui enfin AJAX ne rends pas une fonction PHP accessible depuis javascript, ça reste impossible:

<img style="width: 124px; height: 124px;" id="img"
onclick="total()" alt="" src="imgage1.gif">

ici c'est la fonction total de js qui est appelée et dans cette fonction javascript que doivent être récupérées les (meta)données crées par PHP qui comme son nom l'indique (preprocessor) est interprété avant le chargement de la page donc avant l'existence de HTML ou javascript.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci beaucoup pour vos réponse et je m'excuse pour le retard et aussi j'avais un problème sur mon pc que j'ai réglé temporairement.

En ce qui concerne mon problème ajax/jquery maintenant ça marche et le problème était mon navigateur firefox qui n'exécute pas mon code peut être car j'ai une ancienne version mais sur d'autre navigateur mon code marche et je croyais aussi que c'est la fonction total() que j'exécute quand j'utilise ajax/jquery

J'ai encore une chose quand j'utilise une variable que je n'ai pas transmis du javascript dans le php et je voudrai après l'avoir en javascript elle n'est pas reconnu je ne sais pas pourquoi?

PAR EXEMPLE:

<?php
$num = !empty($_POST["num"]) ? $_POST["num"] : NULL;

$result = array();

if($num){
$result['msg'] = $num;

var $a=$num+10;

}else{
$result['msg'] = "Erreur";
$result['post'] = $_POST;
}

echo json_encode($result);
echo json_encode($a);

?>

Comment je peux avoir la variable $a dans mon javascript puisque cette variable vient dêtre créer en php.

j'ai essayé de faire ça mais elle n'est pas reconue
<script language="JavaScript"> var a= <?php $a; ?>; alert(a);  <script>


Merci pour votre réponse
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
28 avril 2016 à 14:42
Tu n'as visiblement pas compris comment fonctionne le php...le javascript ...et l'ajax !!!!

Pour commencer... modifie le code du fichier ajax php comme ceci :
<?php
$num = !empty($_POST["num"]) ? $_POST["num"] : NULL;

$result = array();

if($num){
  $result['msg'] = $num;
  $result['a'] = $num+10;
}else{
   $result['msg'] = "Erreur";
   $result['post'] = $_POST;
}

echo json_encode($result);


?>


et ensuite, du côté javascript, tu peux récupérer tes variables comme ça :
$.post(url,{ nom: 'moi'})
   .done(function(data){
      console.log(data);
      alert(data.msg);
      $("#score").html(data.msg);
       var a = data.a;
       alert(a); //pour les tests
     })
    .fail(function(){
        console.log("erreur");
     });
0
oui vous avez raison car c'est la première fois que j'utilise l'ajax

j'ai essayé ton code et il marche très bien et j'ai bien reçu la variable a.

j'ai cru que seulement les données transmises par ajax que je doit mettre dans le tableau $result .

je voudrai savoir si c'est possible d'introduire du javascript directement dans du php par exemple:

if ($a = 15)
document.getElementById("id").value=15; je ne sais pas comment le faire

je sais quand peut le faire après le retour des données en faisant cela :
$("#id").html(data.a);
0