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 :

[AJAX] Internal Server Error


Sujet :

AJAX

  1. #1
    Membre confirmé
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 75
    Par défaut [AJAX] Internal Server Error
    Bonjour la liste,

    Tout nouveau à Ajax j'essaie d'adapter les exemples tirés d'un bouquin à mon besoin personnel : l'aide à la complétion d'un champ de formulaire.

    Dès que j'ouvre ma page html, une fenêtre d'alerte me signale une Internal Server Error.
    Voici une partie du code javascript :

    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
     
    function handleRequestStateChange() 
    {
      if (xmlHttp.readyState == 4) 
      {
        if (xmlHttp.status == 200 || xmlHttp.status == 304) 
        {
          try
          {
            handleServerResponse();
          }
          catch(e)
          {
            alert("Erreur de lecture de la réponse : " + e.toString());
          }
        } 
        else
        {
          alert("Problème d'obtention des données :\n" + xmlHttp.statusText);
        }
      }
    }
    Apparemment le 'statut' n'est jamais à 200. Quelqu'un a-t-il une idée des causes possibles ?

    Je travaille en local sous linux avec firefox.

    Merci de votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Si tu as "Internal serveur error", c'est que le status est à 500 mais pas 200. L'erreur vient du coté serveur mais pas javascript; tu auras plus de chance de voir de ce coté. Sinon, xmlHttp est une variable globale?

    A+.

  3. #3
    Membre confirmé
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 75
    Par défaut
    Merci de ta réponse.

    Pour le côté serveur j'ai ça avant le début du code proprement dit, je pensais que c'était suffisant :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    header('Content-Type: text/xml');
    ...

    Quant à la déclaration de la variable, j'ai bêtement pompé dans le bouquin (ayant du mal avec la grammaire javascript) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // début du code
    var xmlHttp = createXmlHttpRequestObject();
     
    function createXmlHttpRequestObject() 
    {
      var xmlHttp;
      try
       ...
    C'est vrai que ça donne l'impression de déclarer deux fois la même variable...

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    une fenêtre d'alerte me signale une Internal Server Error.
    Ce ne serait pas une question de droits sur ton fichier ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre confirmé
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 75
    Par défaut
    Non, je suis comme Moubarak, j'ai tous les droits. Désolé..

    Sérieusement, non, je ne crois pas. Comme je l'expliquai au début, j'adapte l'exercice d'un bouquin sur le sujet. En fait, c'est le second : j'en ai déjà recopié un qui a fonctionné sans problème, avec le même utilisateur, les mêmes répertoires, etc. Et tout marchait nickel. C'est vraiment étrange.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par kristen44 Voir le message
    Non, je suis comme Moubarak, j'ai tous les droits. Désolé..
    Ben précisément, j'ai récemment eu le cas sur un mutualisé OVH : la création distante via Aptana attribuait un CHMOD 666 et j'obtenais la même erreur, en passant les droits à 644 et c'est passé

    En tout cas, une erreur 500, ça ne peut venir ni de JavaScript ni de PHP à priori (à moins que tu demandes à PHP de renvoyer une erreur 500 en header, ce qui serait pour le moins inapproprié )
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre confirmé
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 75
    Par défaut
    Citation Envoyé par Bovino Voir le message
    En tout cas, une erreur 500, ça ne peut venir ni de JavaScript ni de PHP à priori (à moins que tu demandes à PHP de renvoyer une erreur 500 en header, ce qui serait pour le moins inapproprié )
    Et si et si, ça peut venir du PHP. En fait, ça venait du PHP : j'avais une faute de frappe mysql_fetch-array au lieu de mysql_fetch_array, et c'est ça qui générait l'erreur 500, car je ne l'ai plus après rectification. Je suis un âne bâté !

    Ceci dit, mon code javascript me renvoie maintenant une autre erreur :
    Erreur de lecture de la réponse : TypeError: myDiv is null
    Je vous montre le code source (c'est la première fois que j'essaie de créer du xml à partir de PHP et je ne vois pas pourquoi il ne renvoie rien. Mais je ne suis pas certain par exemple de la façon de passer la variable entre parenthèses après createTextNode : guillemets ou pas ?)

    Code php : 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
     
    <?php
    header('Content-Type: text/xml');
     
    include ('connect.inc.php');
     
    $dom = new DOMDocument();
    $respont = $dom->createElement('respont');
    $dom->appendChild($respont);
     
    $name = $_GET['name'];
    $kinnigou = mysql_query("SELECT poz FROM ajaks WHERE poz LIKE '".$name."%"."' LIMIT 15");
    while ($linenn = mysql_fetch_array($kinnigou))
    {
    $kinnig = $dom->createElement('kinnig');
    $kinnigText = $dom->createTextNode("$linenn[poz]");
    $kinnig->appendChild($kinnigText);
    $respont->appendChild($kinnig);
    }
     
    $xmlString = $dom->saveXML();
    echo $xmlString;
     
    mysql_close();
    ?>

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Peut-on voir la fonction handleServerResponse() et le code HTML de la page?

    A+.

  9. #9
    Membre confirmé
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 75
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Peut-on voir la fonction handleServerResponse() et le code HTML de la page?

    A+.
    Ah mais que oui !

    js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function handleServerResponse()
    {
      var xmlResponse = xmlHttp.responseXML;
      xmlRoot = xmlResponse.documentElement;  
      kinnigArray = xmlRoot.getElementsByTagName("kinnig");
     
      var html = "";  
      for (var i=0; i<kinnigArray.length; i++)
        {html += kinnigArray.item(i).firstChild.data + "<br/>";}
      myDiv = document.getElementById("myDivElement");
      myDiv.innerHTML = "<p>Le serveur a répondu : </p>" + html;
    }
    et le html tout bête :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>AJAX & PHP</title>
    	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
        <script type="text/javascript" src="testajax.js"></script>
      </head>
      <body onload='process()'>
        Kinnigoù : 
        <input type="text" id="myName" />
        <div id="MyDivElement" />
      </body>
    </html>

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="MyDivElement" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myDiv = document.getElementById("myDivElement");
    Attention, JavaScript est sensible à la casse ! Donc MyDivElement != myDivElement
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  11. #11
    Membre confirmé
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 75
    Par défaut
    Merci Bovino, c'est bien vu !

    Hélas, ça ne fait qu'avancer un peu le schmilblick : je n'ai plus aucun message d'erreur, mais aucun mot ne s'affiche encore au lieu de la liste espérée...

  12. #12
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Tu ne peux pas faire un innerHTML avec un auto-fermante.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <div id="MyDivElement"></div>
    A+.

  13. #13
    Membre confirmé
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 75
    Par défaut
    Merci Aimé : décidément le terrain est truffé de mines !

    Mais bon aucun résultat après modification...

  14. #14
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    fait un alert pour voir

  15. #15
    Membre confirmé
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 75
    Par défaut
    1 - Je la place où l'alerte ?

    2 - Je viens de réaliser - enfin, j'espère ne pas dire une grosse ânerie parce que ça commence à s'embrouiller sérieux là-haut - que les lettres tapées par l'utilisateur n'étaient pas transmises au module php. J'ai donc transformé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlHttp.open("GET", "testajax.php", true);
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    name = encodeURIComponent(document.getElementById("myName").value);
    xmlHttp.open("GET", "testajax.php?name=" + name, true);
    Bon, toujours pas d'affichage d'aucun résultat mais, rassurez-moi, la modif est bienvenue ?

  16. #16
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     for (var i=0; i<kinnigArray.length; i++)
        {html += kinnigArray.item(i).firstChild.data + "<br/>";}
         alert(html);
         var myDiv = document.getElementById("myDivElement");
    Sinon fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var xmlResponse = xmlHttp.responseText;
    alert (xmlResponse);

  17. #17
    Membre confirmé
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 75
    Par défaut
    J'ai essayé sans succès les deux alertes.

    Rien ne se passait : c'est comme si je n'avais que le code html !

    Et puis j'ai commenté deux lignes que j'avais rajoutées mais sans rapport avec le problème apparemment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //var _submitButton=null;
    et plus loin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //_inputField.autocomplete="off";
    et maintenant j'ai un beau message d'erreur (enfin un signe de vie ! et tant qu'il y a de la vie...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur de lecture de la réponse : TypeError: kinnigArray.item(i).firstChild is null
    J'en était là de moins désespoir.. je tape un 'a', puis un 'b' et je ne sais pas pourquoi, je recharge la page : et là nouvelle alerte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    annonce de la page http://localhost (titre de la fenêtre) :
    <?xml version="1.0"?>
    <respont><kinnig>aba</kinnig><kinnig>abad</kinnig><kinnig>abadenn</kinnig><kinnig>abadennad</kinnig><kinnig>abadenner</kinnig><kinnig>abadiezh</kinnig><kinnig>abadorenn</kinnig><kinnig>abaf</kinnig><kinnig>abafaat</kinnig><kinnig>abafamant</kinnig><kinnig>abafaus</kinnig><kinnig>abafded</kinnig><kinnig>abafder</kinnig><kinnig>abafer</kinnig><kinnig>abafi</kinnig></respont>
    Je présume que c'est le résultat de alert (xmlReponse).
    Et c'est bien le résultat que j'attendais ! Mais qui ne s'affiche pas dans le DIV...

  18. #18
    Membre confirmé
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 75
    Par défaut
    STOOOP !

    Ça marche... et ça marchait depuis le début ! Je m'explique :

    1 - Le but est bien d'aider à la saisie en faisant des propositions de mots commençant par la ou les lettres déjà tapées par l'utilisateur. Or dans le code javascript, la fonction process() n'était appelée qu'à l'ouverture de la page, avec un champ vide. L'utilisateur pouvait bien taper ce qu'il voulait, la fonction n'était plus appelée ! Pas étonnant que rien ne se passait...

    2 - Problème résolu en supprimant l'appel par onLoad et en le remplaçant par un appel via onKeyup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" id="myName" onKeyup="process()"/>
    3 - En fait, j'ai toujours des soucis :
    - certaines lettres (ex : 'a') provoquent une erreur :
    Erreur de lecture de la réponse : TypeError: kinnigArray.item(i).firstChild is null
    - le 'ñ' ne passe pas (et il y en a un paquet)
    - j'ai transféré les fichiers sur mon espace perso chez free, et là, rien de rien...

    Mais bon, je ne vais pas monopoliser votre attention et je vais tâcher de résoudre tout ou partie des problèmes par moi-même. Si vraiment je cale, je reviendrai demander votre aide. Merci à tous.

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

Discussions similaires

  1. 500 (Internal Server Error) Ajax / ASP / MVC
    Par pachyderme dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 23/12/2015, 19h43
  2. [AJAX] Internal Server Error
    Par hasaike dans le forum AJAX
    Réponses: 1
    Dernier message: 12/12/2011, 10h30
  3. Internal Server Error Perl
    Par mercenaire_bis dans le forum Web
    Réponses: 2
    Dernier message: 12/07/2006, 17h16
  4. [SERVLET][STRUTS]Error 500--Internal Server Error
    Par Devil666 dans le forum Struts 1
    Réponses: 7
    Dernier message: 27/06/2005, 14h07
  5. [RegEx] [regex][serveur] Internal server error
    Par Maxoo dans le forum Langage
    Réponses: 8
    Dernier message: 29/12/2004, 16h40

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