11544 sujets

JavaScript, DOM et API Web HTML5

Bonjour !

Je viens de me plonger pour la première fois dans la joie de l'autocomplete de l'ui Jquery Smiley mur
Après avoir essayé plusieurs façons de faire, je ne vois pas comment je peux faire !

Mon but est simplement d'instancier le tableau des données pour l'autocomplete avec un ajax récupérant le nom de mes sociétés.

Voici ce que j'essaye pour l'instant (qui ne fonctionne pas ) :


function GetSociete ()
{   
    var availableTags = new Array(); 
    $.ajax({   
			type: 'POST',
			url: 'scripts_php/recup_societe.php',
			dataType: 'json',
			success:   
			     function (json) 
                {
                    for (j=0; j<json.length; j++)
                    {
                        availableTags[j] = json[j];                        
                    }  
                  
				}       
		});

        return availableTags;
        
}    
    var availableTags = new Array();
    
    availableTags = GetSociete();
    
    console.log (availableTags);

	$( "#nom_soc" ).autocomplete({
		source: availableTags     
	});  


Mais je crois que je ne fais pas les choses dans le bon sens >< C'est à dire que le return, du fait que l'ajax est asynchrone, veut s'effectuer avant que la requête ajax n'ai créé le tableau qu'il doit renvoyer ... Mais je ne peux pas non plus mettre le return à la fin de mon success, ça ne fonctionne pas ! Smiley ohwell
Merci d'avance ! Smiley lol
Modifié par Seyu (20 Feb 2012 - 17:22)
Edit : Le problème venait effectivement du fait que l'ajax se faisait de manière asynchrone, donc un petit paramètre et tout fonctionne :

    $.ajax({   
			type: 'POST',
			url: 'scripts_php/recup_societe.php',
			dataType: 'json',
			[b]async : false,[/b]
			success:   
			     function (json) 
                {   
                    for (i=0; i<json.length; i++)
                    {
                        availableTags[i] = json[i];                         
                    }  
				}       
		});
[/i][/i]
Modifié par Seyu (21 Feb 2012 - 09:19)