Remplir une liste avec une requête Ajax [Résolu/Fermé]

Signaler
Messages postés
323
Date d'inscription
mardi 11 septembre 2012
Statut
Membre
Dernière intervention
24 août 2016
-
Messages postés
323
Date d'inscription
mardi 11 septembre 2012
Statut
Membre
Dernière intervention
24 août 2016
-
Bonjour, sur mon site, j'effectue une requête Ajax qui va lire le contenu d'une page php avec une requête SQL.
Ensuite, je récupère la liste des réponses de la requête SQL, et j'aimerais remplir une liste avec ces réponses, mais ça ne fonctionne pas !
Voilà mon code :

var listeARemplir = Array();

RequestAjax();
function RequestAjax()
{
 var list = Array();
 $.ajax({
 url: 'functions.php',
 type: 'GET',
 data: {Data: 1},
 dataType: 'html',
 success: function(code_html, statut)
 {

   list = JSON.parse(code_html);
   for(i=0;i<list.length;i++)
                       {
                           listeARemplir[i] = list[i];
                        }
   
            
 }
})
}

console.log(listeARemplir);



Mais ma liste listeARemplir reste vide.
Comment puis-je résoudre ce problème ?
Merci d'avance !


EDIT : Ajout du langage dans les balises de code

5 réponses

Messages postés
31203
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 janvier 2021
3 212
Bonjour,

Déjà.. si tu travailles avec du JSON .. autant le spécifier dans l'AJAX.
(et dans le script PHP qui te retourne le json.... faire un json_encode du résultat).

Ensuite... as tu essayé de faire un console.log dans la partie SUCCESS pour savoir ce que ça donne ?
Et aussi... mets un ERROR .. au cas où.


var listeARemplir = RequestAjax();
console.log("ListeARemplir =");
console.log(ListeARemplir);

function RequestAjax(){
  var list = [];
     $.ajax({
        url: 'functions.php',
        type: 'GET',
         data: {Data: 1},
         dataType: 'json',
         success: function(data, statut){
           console.log(data);
           list = data;
         error: function(xhr, status, error) {
             var err = eval("(" + xhr.responseText + ")");
             alert(err.Message);
           }
       }
   })
return list;
}

console.log(listeARemplir);


Messages postés
323
Date d'inscription
mardi 11 septembre 2012
Statut
Membre
Dernière intervention
24 août 2016
6
Ca ne fonctionne toujours pas. Lorsque je passe le type en json, ça me renvoie : "Unexpected token s".
Alors j'ai vu qu'il fallait apparemment mettre dans ma page functions.php un : "header('Content-type: application/json');"
mais ça ne change rien !
Lorsque j'affiche ce que je reçois, ça me marque bien ce que j'attends, la liste json.
Alors ou y a-t-il une erreur après ?
Messages postés
31203
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 janvier 2021
3 212
Sans voir ton code PHP ... impossible de t'aider.
Y a tu ajouté un json_encode comme je te l'avais indiqué ?
Messages postés
323
Date d'inscription
mardi 11 septembre 2012
Statut
Membre
Dernière intervention
24 août 2016
6
Et aussi, lorsque je fais ce code là :


function RequestAjax()
{
var list = Array();


$.ajax({
url: 'functions.php',
type: 'GET',
data: {Data: 1},
dataType: 'html',
success: function(code_html, statut)
{

list = code_html;

//console.log(code_html);


}

})
console.log(list);
return list;
}


ça m'affiche une liste vide avec le console.log, donc la liste ne se remplie même pas dans la fonction...
Messages postés
31203
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 janvier 2021
3 212
Comme marqué dans mon message précédent .... sans voir ton code PHP .. IMPOSSIBLE de te répondre mieux que ça
Messages postés
31203
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 janvier 2021
3 212
var listeARemplir=new Array();
function RequestAjax(){
var tmp = new Array();
 $.ajax({
     url: 'functions.php',
     type: 'GET',
     data: {Data: 1},
     async:false,
     dataType: 'json',
     success: function(data){
       tmp = data;
    },
     error: function(xhr, status, error) {
       var err = eval("(" + xhr.responseText + ")");
       alert(err.Message);
     }      
  })
//console.log(tmp);
return tmp;
}

var listeARemplir = RequestAjax();
console.log(listeARemplir);
for(var i=0;i<listeARemplir.length;i++){
 console.log( "item "+i + " = " + listeARemplir[i]);
}



Cordialement,
Jordane
Messages postés
31203
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 janvier 2021
3 212
Pour mon exemple j'ai utilisé le fichier php suivant:
<?php
// Récupération des variables
$data = isset($_GET['Data'])?$_GET['Data']:NULL;

$result = array();
//traitement
if($data){
  $result[] = "test1";
  $result[] = "test2";
  $result[] = "test3";
}

echo json_encode($result);
?>
Messages postés
323
Date d'inscription
mardi 11 septembre 2012
Statut
Membre
Dernière intervention
24 août 2016
6
Ah oui et bien le type 'json' ne passait pas dans ajax, et maintenant ça fonctionne !
J'avais un code PHP similaire au tien, et d'un coup ça a fonctionné !
Merci pour ton aide !