IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

Syntaxe de getjson


Sujet :

AJAX

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 89
    Points : 83
    Points
    83
    Par défaut Syntaxe de getjson
    Bonsoir
    Puis-je demander votre aide?
    Je code une fonction getJSON.
    Le fichier de données est bien lu (j'ai des traces dans mon fichier log)
    Mais l'exécution ne passe pas dans la fonction.
    Voilà mon codage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    $script.= '$(document).ready(function() {
    			var autoselect = '.$autoselect.';
    			$("#search_'.$htmlname.'").change(function() {
    				console.log("Call runJsCodeForEvent'.$htmlname.'");
    				var obj = [{"method":"getContacts","url":"ajaxclient.php","htmlname":"contactid","params":{"add-customer-contact":"disabled"}}];
     
    				$.each(obj, function(key,values) {
    					if (values.method.length) {
    						runJsCodeForEvent'.$htmlname.'(values);
    					}
    				});
    			});
     
    			function runJsCodeForEvent'.$htmlname.'(obj) {
      				console.log("Dans runJsCodeForEvent'.$htmlname.'");
    				var id = $("#'.$htmlname.'").val();
    				var method = obj.method;
    				var url = obj.url;
    				var htmlname = obj.htmlname;
    				$.getJSON(
    					url,
    					{
    						action: method,
    						id: id,
    						htmlname: htmlname
    					},
    					function(response) {
    						 console.log("reponse");
    						 console.log(response);	 	    
    						$("select#" + htmlname).html(response.value);  
    					});
    				console.log("retour de getJSON");
    			};	
    };';
    Je ne comprend pas pourquoi, sur la console, je n'ai pas le message 'response' et les données lues
    Alors que le message "retour de getJSON" s'affiche bien.

    Quelle est la faute que je ne vois pas?
    Merci
    Claude

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    sur le forum Javascript il te faut mettre le code généré et non le code serveur, cela permet la plupart du temps de mettre en évidence des erreurs.

    Pourquoi généré ton script coté serveur ?

  3. #3
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 89
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    sur le forum Javascript il te faut mettre le code généré et non le code serveur, cela permet la plupart du temps de mettre en évidence des erreurs.
    'le code généré'? je mets la partie du code source de la page HTML. Est-ce cela?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <!-- Input text for third party with Ajax.Autocompleter (selectCompaniesForNewContact) -->
    <input type="text" size="30" id="search_arg_idtiersLig" name="search_arg_idtiersLig" value="" /><input type="hidden" name="arg_idtiersLig" id="arg_idtiersLig" value="-1" /><!-- Javascript code for autocomplete of field arg_idtiersLig -->
    <script type="text/javascript">
    $(document).ready(function() {
    					var autoselect = 0;
    					var options = [];
    					$("#search_arg_idtiersLig").change(function() {
      console.log("Call runJsCodeForEventarg_idtiersLig");
    						var obj = [{"method":"getContacts","url":"ajaxclient.php","htmlname":"contactid","params":{"add-customer-contact":"disabled"}}];
     
    						$.each(obj, function(key,values) {
    							if (values.method.length) {
    								runJsCodeForEventarg_idtiersLig(values);
    							}
    						});
    					});
     
    					function runJsCodeForEventarg_idtiersLig(obj) {
      console.log("Dans runJsCodeForEventarg_idtiersLig");
    						var id = $("#arg_idtiersLig").val();
    						var method = obj.method;
    						var url = obj.url;
    						var htmlname = obj.htmlname;
    						var	titreaction = "action";	
    						var	titreid = "id";	
    						var	titrehtmlname = "htmlname";				
    						var tableau=	{"method":method,"id":id,"htmlname":htmlname};
    						//var tableau=	{titreaction:method,id:id,titrehtmlname:htmlname};
    	 console.log(tableau); 						
    						$.getJSON(url, 	
    							tableau,
    							function(response) {
    	 console.log(response); 									
    											});
    	console.log("retour de getJSON");
    					};				
     
    					});</script>
    Citation Envoyé par NoSmoking Voir le message
    Pourquoi généré ton script coté serveur ?
    Je ne comprend pas la question, preuve de mon inexpérience.
    Voilà ce que je veux faire :
    J'ai un code php, travaillant sur le serveur, qui envoie une page HTML au client avec cette boite de sélection pour choix d'un tiers dans une liste.
    Lorsque la sélection a été faite, la fonction getJSON fait une demande au serveur qui va faire une interrogation du client sélectionné pour obtenir son téléphone et son mail. C'est cela que je veux recevoir dans "response".
    Voici le code du php appelé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    // Load original field value
    if (! empty($id) )
    {	
    	$return=array();
     
        $langs->load('companies');
     
            $out='';
     
    		$sql = "SELECT st.rowid,  st.phone as TiersTel, st.email as TiersMail, stex.s_tel2 as TiersSupTel,  stex.s_email2 as TiersSupMail, p.code as country_code ";
            $sql.= " FROM llx_societe as st";
            $sql.= " LEFT JOIN llx_societe_extrafields as stex on fk_object = st.rowid ";
            $sql .= ' LEFT JOIN llx_c_pays as p ON st.fk_pays = p.rowid';
            $sql.= " WHERE st.rowid ='".$id."'";
    		$w= new FormCglSuivi($db);
     
            $resql=$db->query($sql);
            if ($resql)
            {
                $num = $db->num_rows($resql);
                $i = 0;
                if ($num)            {
    			   $objc = $db->fetch_object($resql);
                   $return['telmail'] = $w->ChercheTelMailTiersContact($objc->TiersTel, $objc->TiersSupTel, $objc->TiersMail, $objc->TiersSupMail, $objc->rowid,  $objc->country_code);	
                }			
            }
            else
            {
                //dol_print_error($db);
                $error =  $db->error;
    			$num = -1;
            }	
    	$return['tel']	= $objc->TiersTel;
    	$return['telfmt']	= $objc->TiersTel;
    	$return['mail']	= $objc->TiersMail;
    	$return['suptel']	= $objc->TiersSupTel;
    	$return['suptelfmt']	= $objc->TiersSupTel;
    	$return['supmail']	= $objc->TiersSupMail;
    	$return['num']		= $num;
    	$return['error']	= $error;
    	echo json_encode($return);
    dol_syslog("ajaxclient retour=".join(',',$return));
     
    } // if
    echo json_encode("");
    J'ai poursuivi les tests et j'ai remarqué que le message s'affiche sur la console si une erreur s'est produite dans le code appelé, c'est dire que getJSON appelle la fonction. Par contre, dès que cela se passe bien dans le code appelé, getJSON ne lance pas la fonction permettant d'afficher le message sur la console.

    En faisant ce message, je viens de comprendre pourquoi. C'est une erreur de ma part.
    En effet, la dernière ligne du code appelé annule la recherche surtout si cela s'est bien passé !!! cqfd.

    Je mets tout de même le code, afin de compléter la question et rendre compréhensible la solution.
    Si parce que vous avez quelques remarques à y faire, je suis preneuse.

    Merci NoSmoking ou merci à celui qui se cache derrière 'pas de fumée!!'


    Claude

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53
  2. Syntaxe requete
    Par Chipolata dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/03/2003, 14h22
  3. [Syntaxe] Action simultanée sur plusieurs élements
    Par FranT dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/03/2003, 20h20
  4. Syntaxe TASM <-> MASM
    Par LFC dans le forum Assembleur
    Réponses: 3
    Dernier message: 28/02/2003, 15h56
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo