Remplir une liste avec une requête Ajax

Résolu
parousky Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   -  
parousky Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

5 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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);


0
parousky Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   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 ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Sans voir ton code PHP ... impossible de t'aider.
Y a tu ajouté un json_encode comme je te l'avais indiqué ?
0
parousky Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   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...
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Comme marqué dans mon message précédent .... sans voir ton code PHP .. IMPOSSIBLE de te répondre mieux que ça
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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);
?>
0

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

Posez votre question
parousky Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   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 !
0