Forum Programmation.web Problème d'AJAX

Posté par  .
Étiquettes :
0
21
août
2006
Salut la compagnie,

J'espère trouver une aide pour ce problème d'AJAX qui commence à me casser les bonbons....

J'ai quelques fonctions JavaScript qui utilisent AJAX pour effectuer des traitements via des scripts PHP. Cela fonctionne très bien quand je n'ai rien à récupérer de la part de PHP, les actions serveurs sont correctement effectuées. Dès que j'essaye de récupérer quelque chose, c'est comme ci la page PHP n'était jamais appelée.

Javascript

function checkNewFiche() {
request = new XMLHttpRequest();
request.onreadystatechange = function(){
if (request.readyState == 4){
alert(request.responseText);
};
http_request.open('GET', "http://192.168.2.205/asterisk.php?ordre=checkFiche&agent(...)"+numTA.value, true);
http_request.send(null);
}

function appeler() {
var numTA = document.getElementById("numTA");
var numAppel = document.getElementById("numAppel");

xhr_object = new XMLHttpRequest();
xhr_object.open("GET", "http://192.168.2.205/asterisk.php?ordre=originate&agent="+numTA.value+"&telephone="+numAppel.value, false);
xhr_object.send(null);

}


PHP

$fp = stream_socket_client("tcp://192.168.2.127:5123", $errno, $errstr, 30);
switch ($_GET['ordre']){

case 'checkFiche' :
if(!($dbid = mysql_connect("***", "***", "******"))) die('Connexion impossible : ' . mysql_error());
mysql_select_db("asterisk");
$sql_req="SELECT etat, crm_id, op_id, session_id FROM appels WHERE call_id=(SELECT MAX(call_id) FROM appels WHERE agent= ".$_GET['agent'].")";

$sql_res = mysql_query($sql_req,$dbid);
while ($res = mysql_fetch_array($sql_res)){
if($res['etat']=='attente'){
print $res['crm_id'].";".$res['op_id'].";".$res['session_id'];
}
}
mysql_close($dbid);
break;

case 'originate' :
fputs($fp, "originate;".$_GET['agent'].";".$_GET['telephone']);
break;
}


La fonction 'appeler' fonctionne parfaitement alors que 'checkFiche' semble ne pas atteindre le fichier PHP, comme ci elle bloquait sur la fonction onreadystatechange. Lancé avec un navigateur et les variables dans l'url le script PHP s'éxécute parfaitement. Cette appli Web est destinée à fonctionner uniquement sous Firefox. Je n'ai aucune erreur provoquée dans la console Javascript ni dans les logs PHP...

Je suis ouvert à toute idée car là je désespère...

Merci
  • # Variable globale

    Posté par  (site web personnel) . Évalué à 1.

    Essaie de déclarer ta variable "request" dans le contexte global:

    var request;

    function checkNewFiche() {

    request = new XMLHttpRequest();

    ...
  • # Mon conseil

    Posté par  (site web personnel) . Évalué à 1.

    Met un "else" à ton "if (request.readyState == 4)" avec un alert du readyState dedans et regarde ce qui se passe.
    • [^] # Solution

      Posté par  . Évalué à 1.

      Bon je m'en suis sortit, Notamment en appliquant ce que vous m'avez dit.
      Mon principal probème vient du faite que la console Javascript n'affiche pas les erreurs dans mon fichier .js et celà probablement parce que je l'utilise avec un bandeau en XUL.
      En gros à force de triturer mon code dans tous les sens il devait me manquer une accolade quelque part. Après avoir tout repris ça fonctionne.
      A noter que bizarrement ça ne fonctionne qu'en asynchrone mais ça ne me gêne pas.

      function checkNewFiche() {

      var numTA = document.getElementById("numTA");
      var request = new XMLHttpRequest();

      request.open("GET", "http://192.168.2.205/asterisk.php?ordre=checkfiche&agent(...)"+numTA.value, true);
      request.onreadystatechange = function(){
      // instructions de traitement de la réponse
      if ((request.readyState == 4)){
      alert(request.responseText);
      }
      }
      request.send(null);
      }

      Merci

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.