Bug basique mais incompréhensible avec ajax...

Fermé
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 23 juin 2018 à 15:49
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 4 juil. 2018 à 21:39
Bonjour,



Bonjour,




Je bute sur un script ajax qui ne me renvoie pas les infos cherchées et je ne comprends pas où est le problème. Si quelqu'un peut m'aider ce serait super ! :-)
Voici mon script ajax :
    $("#valid_login").click(function() {
        var login = $("input#login2").val();
        var pwd = $("input#pwd").val(); 
        console.log("login "+login+" "+pwd);
            $.ajax({
                data: {login:login,pwd:pwd },
                //dataType: 'json',
                type: "POST",
                url: "checklogin.php", 
                error : function(x,err){
                         alert(err);
                        },	    
                success: function(data)
                {
                    console.log("userdata "+data);
                    });
                }
            });	 
        
        return false;
    }); 

Je précise que les valeurs login et pwd sont bien présentes et que checklogin.php existe bien l'emplacement voulu.
Voici le script checklogin (que j'ai réduit à une ligne pour tente de résoudre le bug)
<?php return ("ok");



Tout me semble ok mais la console m'affiche uniquement "userdata", le "ok" n'est pas récupéré... Pourquoi ?
Merci d'avance pour votre aide !

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
23 juin 2018 à 20:06
Bonjour,

En ajax on n'utilise pas le RETURN côté PHP .... mais le ECHO
par exemple :
$result = "ok";


//retour ajax (en format JSON )
echo json_encode($result);

0
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
4 juil. 2018 à 19:24
le problème ne vient pas de là, avec echo json_encode($result); ça me retourne PArse error (et je mets bien datatype: json dans le script jquery).
J'utilise régulièrement "return result" lorsque je ne cherche pas à réucpérer des données json et je n'ai jamais le moindre problème....
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
4 juil. 2018 à 21:36
Si il te met un parse Error.... c'est que ton script PHP génère une erreur......
Par exemple... il est mal encodé et il se trouve avec un caractère à la noix dedans....
Vérifie que le fichier est en UTF8 sans BOM (voir chapitre 1 de ce lien pour savoir comment regarder : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8 )
De plus, si tu places, dans ton JS, un console.log du retour de ton Ajax, tu devrais pouvoir voir dans la console le détail de l'erreur plus complet qu'avec simplement un alert....
error: function(xhr, status, error) {
  console.log(error);
   alert(xhr.responseText);
}    
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
4 juil. 2018 à 21:37
Et puis... comment peux tu dire que tu n'attends pas de retour...
vu le nom de ta fonction et ce que tu souhaites en faire dans le success
 success: function(data)
                {
                    console.log("userdata "+data);
                    });
                }

C'est bien que tu attends une réponse.....
0
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
Modifié le 4 juil. 2018 à 21:45
je ne dis pas que je n'attends pas de retour mais que je ne l'atttends pas en json.
Merci pour le conseil en tout cas, je testerai ça demain. Pr conrtte, vu que ds mon scrpt phpil n'y a que <?php return ("ok"); ?> (ou echo json_encode($result);) je ne vois pas où pourrait être l'erreur...
Bonne soirée
0