Bonjour à tous,
J'ai intégré dans mon projet le script issu du tutoriel d'AJAX autocompletion.
Il fonctionne sous IE, sous Firefox mais pas sous MOZILLA.
QQ1 peux t'il me dire pkoi ?
Merci.
Discussion :
Bonjour à tous,
J'ai intégré dans mon projet le script issu du tutoriel d'AJAX autocompletion.
Il fonctionne sous IE, sous Firefox mais pas sous MOZILLA.
QQ1 peux t'il me dire pkoi ?
Merci.
En tout cas, la page d'exemple fonctionne sous Firefox (et Opera).
L'erreur vient donc de ta page et non du code lui-même.
Bonjour,
Je viens d'étudier cet exemple qui me sera bien utile. Seulement , je ne developpe pas en php mais en java.
La seule difference vient en faite de la page qui doit permettre de créer le flux XML, voici mon code:
Seulement j'obtient l'erreur suivante :<%@ page contentType="text/xml; charset=UTF-8"%>
<%--
Constitution d'un fichier XML
<options>
<option>Nom</option>
....
</options>
--%>
<%@ page import="java.util.*,
java.io.*,
java.sql.*,
javax.naming.*,
javax.sql.*,
oracle.jdbc.OracleTypes" %>
<%@ page language="java" import="classJ.*" %>
<%
//------------------------------
//connexion a la base de donnée
connectDataBase con = new connectDataBase();
Connection conRes = con.getConnect();
request.setAttribute("conRes",conRes);
//Declaration des variables
String debut="";
int maxReturn=10;
int cpt=0;
String sortieXML= "";
//Recuperation des parametres
debut=request.getParameter("debut");
if(debut==null) debut="";
debut=debut.toUpperCase();
//sortieXML=sortieXML+"<?xml version='1.0' encoding='UTF-8' ?><options>";
//Generation de la liste de nom
//Statement statLstNom=conRes.createStatement();
//String queryLstNom="select PC_ID_CDT,PC_NOM,PC_PRENOM from PROFIL where UPPER(PC_NOM) like '"+debut+"%'";
//ResultSet resultLstNom= statLstNom.executeQuery(queryLstNom);
//while(resultLstNom.next())
//{
// String nom=resultLstNom.getString("PC_NOM");
// String prenom=resultLstNom.getString("PC_PRENOM");
// String id=resultLstNom.getString("PC_ID_CDT");
// if(cpt<=maxReturn)
// {sortieXML=sortieXML+"<option>"+nom+"</option>";}
// cpt++;
//}
sortieXML="<?xml version='1.0' encoding='UTF-8' ?><options><option>Un nom</option></options>";
out.print(sortieXML);
%>
Quelqu'un a une idée ?Erreur : instruction de traitement XML pas au début d'une entité externe
Fichier source : http://localhost:8080/Essais/ajax/aj...debut=mondebut
Ligne : 10, Colonne : 1
Code source :
<?xml version='1.0' encoding='UTF-8' ?><options><option>Un nom</option></options></xml>^
Merci
J'ai trouvé la réponse à mon problème, pour ceux qui comme moi utilise plutot jsp que php
<%--
Constitution d'un fichier XML :
<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<options>
<option>Nom</option>
....
</options>
--%>
<%@ page import="java.util.*,
java.io.*,
java.sql.*,
javax.naming.*,
javax.sql.*,
oracle.jdbc.OracleTypes" %>
<%@ page language="java" import="classJ.*" %>
<%
//------------------------------
//connexion a la base de donnée
connectDataBase con = new connectDataBase();
Connection conRes = con.getConnect();
request.setAttribute("conRes",conRes);
//Declaration des variables
String debut="";
int maxReturn=10;
int cpt=0;
//Recuperation des parametres
debut=request.getParameter("debut");
if(debut==null) debut="";
debut=debut.toUpperCase();
//System.out.println("before sending response");
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().write("<options>");
Statement statLstNom=conRes.createStatement();
String queryLstNom="select PC_ID_CDT,PC_NOM,PC_PRENOM from PROFIL where UPPER(PC_NOM) like '"+debut+"%'";
ResultSet resultLstNom= statLstNom.executeQuery(queryLstNom);
while(resultLstNom.next())
{
String nom=resultLstNom.getString("PC_NOM");
String prenom=resultLstNom.getString("PC_PRENOM");
String id=resultLstNom.getString("PC_ID_CDT");
if(cpt<=maxReturn)
{
response.getWriter().write("<option>"+nom+" "+prenom+"</option>");
}
cpt++;
}
response.getWriter().write("</options>");
%>
Si tu es en java, tu ferais _bien mieu_ d'utiliser DWR, c'est simple à utiliser, rapide à mettre en oeuvre, facile à tester, et bien plus efficace que tous les bidouillages que tu peux faire pour faire de l'Ajax à la main.
Ca t'éviterai beaucoup, beaucou, beaucoup d'embêtement. D'ailleurs je n'ai pas encore trouvé d'équivalent PHP, ça existe ?
Salut,
Merci pour l'info. Cela me semble pas trop mal. J'avoue être un peu perdu quand je vois la multitude de FrameWork dit 'Ajax'. Cela en fait un de plus dirait on ? Pour le moment je suis parti sur l'utilisation de prototype.
Sinon tu utiles DWR seul ? pas besoin de Spring, Struts pour autre ?
Quant à ta question, ne connaissant pas le PHP je ne peux te repondre.
Sinon l'exemple d'autocompletion fonctionne bien sous Mozilla, et très bien pour bien comprendre la philosophie XMLHTTPRequest
Merci
Mon archi de référence est Hibernate/Spring/DWR/Archetype (Archetype est basé sur Prototype -> http://archetypejs.org ). Quand c'est du "web 1.0" ou du "1.5" j'utilise Tapestry 5 avec ou à la place d'Archetype. Tout ça permet de coder efficacement et proprement quand on connait le tout.
J'anime le tout avec Maven2 (le probleme de Maven c'est qu'on se casse les dents longtemps desus avant d'arreter de galérer, lui trouvr un vrai intéret et qu'il soit efficace, néanmoins c'est un vrai bon systeme de gestion de vie du projet).
Prototype n'est pas vraiment un framework Ajax (ne te méprend pas il le fait très bien, mais ne s'occupe que du client), c'est plus une sorte de "java.lang", pour moi une sorte d'indispensable pour travailler correctement en JS. DWR va tout simplement te rendre disponible des objets java côté JS d'une façon très naturelle, avec peu de conf.
Dans un système MVC, DWR va tout simplement te permettre de transporter ton modèle côté JS. Simple, efficace, tu vois pas une ligne d'ajax, c'est tout DWR qui s'en occupe et il est capable de faire des sacré truc (du simple ajax, aux batch de requete, à la fragmentation des requetes, au reverse Ajax via polling ou Comet ...). Ca marche très très bien, en plus ca une interface de test auto généré très très pratique !
Partager