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

JavaScript Discussion :

[AJAX] XmlHttpRequest en Ajax


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut [AJAX] XmlHttpRequest en Ajax
    bonjour,

    Je suis débutant en AJAX et j'ai besoin de votre aide, voila mon probleme:

    Je voudrai avec AJAX recuperer le resultat d'une requete en MySQL qui se trouve dans un fichier php en lui passant un parametre. Voila le fichier PHP:
    function create_response($level_id) {
    mysql_connect('localhost', 'root', '');
    mysql_select_db('thesaurus');

    $sql = "SELECT `ConceptName`
    FROM `concept`
    WHERE `ConceptName` LIKE '".$level_id."%' AND ThesaurusID=".'1'." LIMIT 10";
    $req = mysql_query($sql);
    $autoCompletion = mysql_fetch_assoc($req);
    }

    Dans un script Javascript je veux faire du Ajax (je sais pas comment) pour recuperer le resultat de la requete precedente et mettre ce resultat dans un champ texte dans ma page.
    Je sais qu'il faut utiliser XmlHttpRequest mais aucune idée comment puisque je suis debutant. J'apprecie bien votre aide et desole si je vous embete.
    Merci en avance

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2007
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    slt,

    si tu as plusieurs résultat comment vas-tu géré la chose ??

    à partir de là je pourrai te guider
    Conception et hébergement de votre site Web : http://www.jvprod.fr !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Slt jeje13009,

    En fait j'ai cette fonction en Javascript:
    function checkword()
    {
    var s=$('keys').value;
    var start='';
    if((s=='')||(s.lastIndexOf(' ')==s.length-1))
    {
    $('skeys').innerHTML='';
    return;
    }
    if(s.lastIndexOf(' ')!=-1)
    start=s.substring(s.lastIndexOf(' ')+1);
    else
    start=s;
    if(keys.length<1)
    {
    if($('allkeys')!=null)
    {
    var someNodeList = $('allkeys').getElementsByTagName('a');

    var nodes = $A(someNodeList);
    var i=0;
    nodes.each(function(node){
    keys[i]=node.innerHTML;
    i++;
    });
    }
    }
    if(start.length>0)
    {
    var s2="";
    var i=0;
    var max=15;
    keys.each(function(node){
    if((node.length>start.length)&&(i<max)&&(node.substring(0,start.length)==start))
    {

    s2+="<a href='javascript:void(0)' onclick='AddKey3(\""+node+"\",\""+node.substring(start.length)+"\")'>"+node+"</a> ";
    i++;
    }
    });
    $('skeys').innerHTML=s2;
    }
    }

    Au lieu de: var someNodeList = $('allkeys').getElementsByTagName('a'); qui recupere des mots cles d'un champ texte, je voudrai recuperer des mots cles de ma base, voila quoi. Pour cela je dois faire du XmlHttpRequest et recuperer le resultat de la requete. J'espere que c'est plus clair.
    Si t'en as des scripts, des idées ... je suis preneur... Ca fait deux jours que je m'arrache les cheveux puisque je veux modifier le code d'un mec qui n'est pas commenté

    Merci d'avance

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2007
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    slt,

    premiers éléments de réponse...

    soit un fichier js :
    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
    function ObjXHR(){ //définition de la classe
    	try{ return new ActiveXObject("Microsoft.XMLHTTP");}
    	catch(e){
    		try{ return new ActiveXObject("Msxml2.XMLHTTP");}
    		catch(e){
    			try{ return new XMLHttpRequest();}
    			catch(e){ return false;}
    			}
    		}
    	}
     
    function RecupKeywordInBdd(){
    var xhr= false;
    var xhr= new Requete();
     
    requete.onreadystatechange = function(){
         if(requete.readyState == 4){
              if(requete.status == 200){
                   tabReponse = xhr.responseText.split("+");
                   //remplace '+' par le caractère de ton choix
                   //un caractère que tu es sûr de ne pas trouver dans tes mots clés
                   //(ça peut être un espace !)
              }
         }
    }
     
    date = "param1=value1&&param2=value2";
     
    requete.open('POST','url_de_ton_fichier_PHP',true);
    requete.send(data);
    }
    soit un fichier php :
    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
    mysql_connect('localhost', 'root', '');
    mysql_select_db('thesaurus');
     
    $sql = "SELECT `ConceptName`
    FROM `concept`
    WHERE `ConceptName` LIKE '".$level_id."%' AND ThesaurusID=".'1'." LIMIT 10";
    $req = mysql_query($sql);
     
    $reponse = false;
     
    while($autoCompletion = mysql_fetch_assoc($req)){
         $reponse += $autoCompletion."+";
         //remplace '+' par le caractère de ton choix
         //ce doit être le même caractère que dans ton fichier js
         }
     
    echo $autoCompletion;
    dans ta page html, tu intègres le js avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type='text/javascript' src='url_de_ton_fichier_js'></script>
    dans ton fichier php, tu disposes de $_POST['param1'] pour accéder à la valeur de param1 définie dans ton js, et ainsi de suite pour parma2, param3...

    pour lancer la requête, tu n'as qu'à appeler la fonction RecupKeywordInBdd() (à laquelle tu peux ajouter des paramètres également).
    à ce stade là, tabReponse est un tableau dont les valeurs sont les différents mots clés ! je ne t'ai pas indiqué de méthode pour les afficher, car tout dépend du conteneur !
    Conception et hébergement de votre site Web : http://www.jvprod.fr !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Tout d'abord merci pour votre aide, j'ai deja vu ces trucs je veux essayer si ca marche pourtan dans le code que tu m'as donné la fonction Requete est pas definie, Je pense c'est la meme que objXHR non???

    Et je comprends pas comment tu fais ca: $reponse += $autoCompletion."+";

    $response est un boolean et tu l'associe a $autoCompletion qui est un element d'un tableau qui est string

    Merci bien

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2007
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    slt,

    oui, requete est bien objXHR... je n'ai pas modifié mon code de partout pour l'adapter au tiens...

    pourquoi $reponse serait un boolean ?

    on pourrait remplacer la boucle while par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $autoCompletion = mysql_fetch_assoc($req);
     
    for($i=0;$i<$autoCompletion.length;$i++){
         $reponse += $autoCompletion[$i]."+";
         //remplace '+' par le caractère de ton choix
         //ce doit être le même caractère que dans ton fichier js
         }
    normalement les deux fonctionnent aussi bien
    Conception et hébergement de votre site Web : http://www.jvprod.fr !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Merci pour votre aide j'ai resolu le probleme autrement

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

Discussions similaires

  1. [AJAX] [XMLHttpRequest] prob d'accès
    Par fodger dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/10/2006, 17h38
  2. [AJAX] XMLHttpRequest fonctionne pas dans ie
    Par tchoukapi dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 27/09/2006, 11h45
  3. [ajax] XMLHttpRequest et formulaire(<input type='file'>)
    Par Are-no dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/08/2006, 20h22
  4. [AJAX] XMLHTTPREQUEST ne se met pas à jour :-/
    Par franckarts dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/08/2006, 18h11
  5. [AJAX] XMLHttpRequest en parallèle
    Par narkhor dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/07/2006, 09h57

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