Résultat de requete ajax ne s'affiche pas

Résolu/Fermé
abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017 - 4 avril 2017 à 18:02
abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017 - 5 avril 2017 à 09:47
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

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
4 avril 2017 à 18:18
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... )
0
abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017
4 avril 2017 à 18:26
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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
4 avril 2017 à 19:08
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
0
abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017
5 avril 2017 à 09:47
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
0