11548 sujets

JavaScript, DOM et API Web HTML5

Salut a tous,
je suis actuellement en train de developper un site intranet durant mon stage de fin d'étude et je me heurte à un problème (mon tuteur ne sait pas comment le régler) c'est pourquoi je me tourne vers vous Smiley confused .

Donc la situation :
Le site que je developpe comporte un moteur de recherche "full-text" autrement dit il est capable de rechercher un mot dans le contenu de fichiers *.pdf que les utilisateurs upload. Pour ce faire on m'a demandé d'utiliser htdig.
Le moteur fonctionne parfaitement mais il me faut l'implanter au sein de mon site.
J'ai donc un formulaire de recherche, avec un champ "words" qui une fois validé transmet le(s) mot(s) recherché(s) au moteur, qui lui, fait sa recherche et me renvoi le resultat sous la forme d'une page (modèle html ou certaines balises sont remplacées par les résulats).
C'est là que ça se corse :
lorsque j'affiche cette page de résultat, je n'ai aucun problème. Maintenant afin de l'implanter dans mon site j'ai fait la chose suivante :
lorsqu'on rempli le formulaire et qu'on valide, AJAX prend la chose en main, il envoi la requete au moteur et je lui demande d'afficher le résultat dans une <div id="contenu"> </div> de ma page. Tout ceci fonctionne mais lorsque je passe par Ajax, plus aucun caractère spécial n'est affiché corretement.
place au image c'est mieux (je suis obligé de flouter des parties désolé)
sans ajax, page de resultat normale :
ici
avec ajax, page de resultat placer dans un div :
et là

Et voici le code :
Du formulaire :

<form class="form" action="javascript:contenu('contenu','../cgi-bin/htsearch', 'post', 'method=and&amp;format=builtin-short&amp;sort=score&amp;config=htdig&amp;restric=&amp;exclude=&amp;words='+document.forms[0].words.value);">
<fieldset>
        <p>
		<input name="words" size="25" />
		<input type="submit" value="Ok" />
	</p>
</fieldset>
</form>


et mon code JS :

function getXhr()
{
  if(window.XMLHttpRequest)         // Firefox et autres
    xhr = new XMLHttpRequest();
  else if(window.ActiveXObject)     // Internet Explorer
  {
    try
    {
      xhr = new ActiveXObject("Msxml2.XMLHTTP"); // IE version > 5
    }
    catch(e)
    {
      xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  else // XMLHttpRequest non supporté par le navigateur
  {
    alert("Votre navigateur ne supporte pas les objets XMLHttpRequest !");
    xhr = false;
  }

  return xhr;

} // getXhr()


function contenu(id, php, method, param)
{

  getXhr();

  xhr.open(method,php,true);  //  Ouvre la connexion avec le serveur http avec comme url php
  xhr.send(param);            //  Envoie l'url php pour exécution au serveur http

  // Exécution de la fonction dès que l'on obtient une réponse du serveur http
  xhr.onreadystatechange = function()
  {
    // Si on a tout reçu et que le serveur est ok
    // Modifie suivant le code php l'élément ayant pour identificateur id
    if(xhr.readyState == 4 && xhr.status == 200)
    {
      document.getElementById(id).innerHTML = xhr.responseText;
    }
  }
}


J'ai tenté d'utiliser différentes méthodes de "response" => responseXML, stream ... mais comme je m'en doutais ça n'a pas marché et j'ai aussi essayé des fonctions tel que encodeURI ou escape sur mon xhr.responseText mais ça ne marche pas.

et la page de résultat :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
  <title>Site de test</title>
  <meta http-equiv="Content-Type" content="text/html: charset=iso-8859-1" />
  <link rel="stylesheet" type="text/css" href="../Css/appli.css" media="screen" />
</head>
<body bgcolor="#eef7ff">
<h2>R&eacute;sultats de la recherche pour '$&(LOGICAL_WORDS)'</h2>
<hr noshade>
<strong>R&eacute;sultats $(FIRSTDISPLAYED) - $(LASTDISPLAYED) sur $(MATCHES) résultats.
Les <img src="/searchimg/star.gif" alt="*"> indiquent un meilleur resultat.
</strong>
<hr noshade>
$(HTSEARCH_RESULTS)
$(PAGEHEADER)
$(PREVPAGE) $(PAGELIST) $(NEXTPAGE)
</body></html>


Les textes de type $(XX) sont remplacés par le moteur de recherche (cgi).

Voila en espérent ne pas vous avoir trop embrouillé je reste à disposition pour toute information complémentaire et je pense que vous deviendrez mon Gourou si vous trouvez la solution à mon problème.

Amicalement FOX1.
Modifié par FOX1 (12 May 2006 - 10:04)
Il s'agit d'un problème fréquent lors de l'utilisation des méthode ajax Smiley smile
oriente toi vers l'encodage des caractère en utf-8 Smiley smile

coordialement
Je viens d'essayer en passant la page où j'insère ainsi que celle de résultat en utf-8 mais cela n'a rien changé. Je continue a rechercher dans cette voie en espérent trouver la solution. Merci pour l'aide.


Edit : je pense avoir fait le tour de l'utf-8 et j'ai pas toujours pas reussi à rectifier mon problème. Si d'autre personne se sente l'âme a regarder le pavé que j'ai posté je les remercie d'avance =)
Modifié par FOX1 (16 May 2006 - 13:33)