Résultat de requete ajax ne s'affiche pas [Résolu/Fermé]

Signaler
Messages postés
127
Date d'inscription
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017
-
Messages postés
127
Date d'inscription
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017
-
Bonjour,
Dans ma page web j'ai une liste déroulante qui contient des codes clients, lorsque l'utilisateur sélectionne un client (code) sa raison sociale doit s'afficher dans un champ input de type texte, j'ai fait ceci avec ajax mais ça ne retourne rien : je poste mon code espérant que vous pouvez m'aider :

<select name="codeclient" id="codeclient" onChange="RecupererRaisonSociale()">
<option selected>Choisir le code client</option>
<?php
$sql_code_client="select CClient from Client";
$stmt_code_client=sqlsrv_query($conn, $sql_code_client);
while($rslt_code_client=sqlsrv_fetch_array($stmt_code_client, SQLSRV_FETCH_NUMERIC))
{
?>
<option value="<?php echo $rslt_code_client[0]; ?>"><?php echo $rslt_code_client[0]; ?>
</option>
<?php
}
?>
</select>
<input type="text" id="raisonsociale">

Code de la fonction RecupererRaisonSociale()

function RecupererRaisonSociale()
{
var code_client=document.getElementById("codeclient").value;
//document.getElementById("raisonsociale").value=code_client;
var xhr=new XMLHttpRequest();
xhr.open("GET","RecupererRaisonSociale.php?code_client="+code_client,true);
xhr.send(null);
xhr.onreadyStateChange=result;
function result()
{
if((xhr.status== 200) && (xhr.readyState==4))
{
document.getElementById("raisonsociale").innerHTML=xhr.responseText;
}
}
}


Code de la page RecupererRaisonSociale.php

<?php
include("connect.php");
$code_client=$_GET['code_client'];
$raison_sociale="";
$sql_raison_sociale="select RaisonSociale from Client where CClient='$code_client'";
$stmt_raison_sociale=sqlsrv_query($conn,$sql_raison_sociale);
$rslt_raison_sociale=sqlsrv_fetch_array($stmt_raison_sociale, SQLSRV_FETCH_NUMERIC);
$raison_sociale=implode($raison_sociale, $rslt_raison_sociale);
echo $raison_sociale;

?>





1 réponse

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à .... as tu quelque chose qui s'affiche dans la CONSOLE de ton navigateur ?

Ensuite, histoire de debuguer ton code, côté php tu peux faire ceci :
<?php
//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display-errors','on');

//Fichier de connexion à la bdd
require_once("connect.php");


//recuperation PROPRE des variables
$code_clien t= !empty($_GET['code_client']) ? $_GET['code_client'] : NULL;


$sql="SELECT RaisonSociale FROM Client WHERE CClient='$code_client'";
$stmt=sqlsrv_query($conn,$sql);

$stmt = sqlsrv_query( $conn, $sql );

$a_errors = array();
if( $stmt === false ) {
    if( ($errors = sqlsrv_errors() ) != null) {
        foreach( $errors as $error ) {
            $a_errors[] =  array("SQLSTATE" => $error[ 'SQLSTATE']
                                , "code"=>$error[ 'code'] 
                                , "message" => $error[ 'message']);
        }
        print_r($a_errors); 
    }   
}else{
  $rslt_raison_sociale = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_NUMERIC);
  $result = implode(' ', $rslt_raison_sociale); 
}  
  
 echo $result;

?>


Au passage ...
$raison_sociale=implode($raison_sociale, $rslt_raison_sociale);

Le souci ne venait pas de là ? => ( $raison_sociale=implode($raison_sociale... )
Messages postés
127
Date d'inscription
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017

Merci Jordane pour les corrections ,
Rien ne s'affiche dans la console , même avec les modifications que vous venez d'apporter , rien n'a changé
Sinon , est ce qu'il y a une autre manière pour afficher la raison sociale du client sélectionné sans avoir recours à utiliser ajax ? si oui merci de me le renseigner
Messages postés
31203
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 janvier 2021
3 212
Peux tu modifier ton javascript comme ceci :
function RecupererRaisonSociale(){

  var code_client= encodeURIComponent(document.getElementById("codeclient").value);       
  console.log("code_client :" + code_client);
  var xhr = getXMLHttpRequest(); 
  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
      console.log(xhr.responseText);
      document.getElementById("raisonsociale").innerHTML=xhr.responseText;
    }else{
      if(xhr.status>=400){
        console.log(getXhrError(xhr.status));
      }
    }
  };
  
  xhr.open("GET","RecupererRaisonSociale.php?code_client="+code_client,true);  
  xhr.send(null);

}

function getXhrError(err_status){
  var errmsg;
  switch(err_status){
    case 400 :
     errmsg = "Bad Request";
     break;
    case 404 : 
     errmsg = "Ajax File Not Found";
     break;
    case 401 : 
     errmsg = "Accès interdit";
     break;
    case 500 : 
     errmsg = "Erreur de traitement du serveu";
     break;
    default:
     errmsg = "Other error ! " +  err_status;
     break;
  }
  return errmsg;
}

function getXMLHttpRequest() {
  var xhr = null;   
  if (window.XMLHttpRequest || window.ActiveXObject) {
    if (window.ActiveXObject) {
      try {
          xhr = new ActiveXObject("Msxml2.XMLHTTP");
      } catch(e) {
          xhr = new ActiveXObject("Microsoft.XMLHTTP");
      }
    } else {
        xhr = new XMLHttpRequest(); 
    }
  } else {
    alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    return null;
  }
  return xhr;
}

et là encore ... nous dire ce qui apparait dans la console
Messages postés
127
Date d'inscription
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017

Bonjour ,
Sur la console s'affiche le code client et sa raison sociale correctement ,mais dans le champ raison sociale rien ne s'affiche,
j'ai modifié la ligne :

document.getElementById("raisonsociale").innerHTML=xhr.responseText;

par :

document.getElementById("raisonsociale").value=xhr.responseText;

et ça affiche bien la raison sociale dans son endroit :D ,
Merci énormément Jordane et bonne journée