Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Passage variable php-js, framework RIALTO, IE6 vs IE7

2 réponses
Avatar
fred
Bonjour,

Je débute en JavaScripts, mais pas en programmation, et je voudrais
quelques retours d’expériences parce que j’ai quelques soucis
bloquants.
Pour mon stage, je dois, entres autres, transporter une application
faites avec ms-access pour qu’elle soit accessible en réseau,
c'est-à-dire en client-serveur. Le serveur c’est Apache avec php. Je me
suis donc tout naturellement tourné vers AJAX, et j’ai utilisé un
Framework, que je trouve génial (surtout quand on découvre ça …) :
RIALTO.

Avec tout cela, mon fichier .js appelle un fichier .php, par méthode
GET, passe des arguments. Le .php fait sa petite requête, que j’ai le
plaisir de retrouver dans le .js.
Je remplie ainsi un combo au chargement, et un tableau sur le choix
d’un élément dans se combo.

MAIS, j’ai des incohérences, des problèmes, des trucs bizarres qui se
passent :

Quand je fais dans mon fichier php un « echo » pour retourner le
résultat de ma requete, ça ne marche pas, alors qu’avec un return, oui.
Mais j’ai remarqué que dans certain cas, le résultat trouvé dans le .js
est bon, mais quand je fais un eval dessus pour pouvoir traiter ma
variable (spec RIALTO), j’ai des caractères qui disparaissent : les
crochets et doubles quottes.

Faut –il sérialiser ?

De plus, mon entreprise utilise IE 6.
Le remplissage des tableaux se fait bien sous FF, sous IE 7, mais pas
sous IE 6. Que dois-je faire ?
Merci pour vos éclairages avisés d’expert …

2 réponses

Avatar
Elegie
fred wrote:

Bonjour,

Je débute en JavaScripts, mais pas en programmation, et je voudrais
quelques retours d’expériences parce que j’ai quelques soucis bloquants.
Pour mon stage, je dois, entres autres, transporter une application
faites avec ms-access pour qu’elle soit accessible en réseau,
c'est-à-dire en client-serveur. Le serveur c’est Apache avec php. Je me
suis donc tout naturellement tourné vers AJAX, et j’ai utilisé un
Framework, que je trouve génial (surtout quand on découvre ça …) : RIALTO.


Je ne connais pas votre RIALTO, mais vous mets (amicalement bien sûr!)
en garde contre l'utilisation gourmande d'AJAX. AJAX permet certes de
réaliser des "clients riches" remarquables, mais introduit une
complexité souvent sous-estimée par le programmeur (complexité liée aux
problématiques de fall-back avec les formulaires HTML 4, ou au
traitement de requêtes parallèles).

Comme vous débutez, il serait peut-être plus simple pour vous de vous
limiter aux formulaires HTML; n'utilisez AJAX qu'avec parcimonie, quand
vous serez familier des flux HTML/PHP.

Quand je fais dans mon fichier php un « echo » pour retourner le
résultat de ma requete, ça ne marche pas, alors qu’avec un return, oui.


Cela me parait complètement normal, vous écrivez probablement un flux
XML, récupéré par l'objet XMLHTTPRequest, et non un flux HTML destiné à
être lu par le navigateur.

Mais j’ai remarqué que dans certain cas, le résultat trouvé dans le .js
est bon, mais quand je fais un eval dessus pour pouvoir traiter ma
variable (spec RIALTO), j’ai des caractères qui disparaissent : les
crochets et doubles quottes.


Cela est probablement dû à une problématique d'escape; essayez de
doubler votre caractère d'échappement () dans votre PHP, pour prendre
en compte l'échappement chaîne javascript.

Par ailleurs, testez sous Firefox, et vérifiez la console javascript; je
doute qu'un tel problème soit passé inaperçu ("unterminated string").

Faut –il sérialiser ?


Vers quoi? A priori vous utilisez déjà une sérialisation JSON, ce qui de
loin le plus simple :)

Le remplissage des tableaux se fait bien sous FF, sous IE 7, mais pas
sous IE 6. Que dois-je faire ?


Vérifiez que le dernier élément de votre tableau n'est pas suivi d'une
virgule.


HTH,
Elegie.

Avatar
fred
Elegie a présenté l'énoncé suivant :
fred wrote:

Bonjour,

Je débute en JavaScripts, mais pas en programmation, et je voudrais
quelques retours d’expériences parce que j’ai quelques soucis bloquants.
Pour mon stage, je dois, entres autres, transporter une application faites
avec ms-access pour qu’elle soit accessible en réseau, c'est-à-dire en
client-serveur. Le serveur c’est Apache avec php. Je me suis donc tout
naturellement tourné vers AJAX, et j’ai utilisé un Framework, que je trouve
génial (surtout quand on découvre ça …) : RIALTO.


Je ne connais pas votre RIALTO, mais vous mets (amicalement bien sûr!) en
garde contre l'utilisation gourmande d'AJAX. AJAX permet certes de réaliser
des "clients riches" remarquables, mais introduit une complexité souvent
sous-estimée par le programmeur (complexité liée aux problématiques de
fall-back avec les formulaires HTML 4, ou au traitement de requêtes
parallèles).

Comme vous débutez, il serait peut-être plus simple pour vous de vous limiter
aux formulaires HTML; n'utilisez AJAX qu'avec parcimonie, quand vous serez
familier des flux HTML/PHP.


Il s'agissait de mettre à jour une combo, et deux tableaux, le tout sur
des requetes. C'est pour cela qu'AJAX était le meilleur compromis. Pour
ce que j'en fait, grâce au framemork, qui m'afranchi du HTML, c'est le
bon choix !

Quand je fais dans mon fichier php un « echo » pour retourner le résultat
de ma requete, ça ne marche pas, alors qu’avec un return, oui.


Cela me parait complètement normal, vous écrivez probablement un flux XML,
récupéré par l'objet XMLHTTPRequest, et non un flux HTML destiné à être lu
par le navigateur.


Ce n'étais pas un flux XML, mais j'ai fini par trouver la solution : il
faut forcer l'entête comme étant plain/text. Cette modification à tout
de suite débloqués tous les points bloquants suivants :-)

Mais j’ai remarqué que dans certain cas, le résultat trouvé dans le .js est
bon, mais quand je fais un eval dessus pour pouvoir traiter ma variable
(spec RIALTO), j’ai des caractères qui disparaissent : les crochets et
doubles quottes.


Cela est probablement dû à une problématique d'escape; essayez de doubler
votre caractère d'échappement () dans votre PHP, pour prendre en compte
l'échappement chaîne javascript.

Par ailleurs, testez sous Firefox, et vérifiez la console javascript; je
doute qu'un tel problème soit passé inaperçu ("unterminated string").

Faut –il sérialiser ?


Vers quoi? A priori vous utilisez déjà une sérialisation JSON, ce qui de loin
le plus simple :)

Le remplissage des tableaux se fait bien sous FF, sous IE 7, mais pas sous
IE 6. Que dois-je faire ?


Vérifiez que le dernier élément de votre tableau n'est pas suivi d'une
virgule.


HTH,
Elegie.


Merci beaucoup de votre contribution. Je sais depuis longtemps que JS
est dur à maintenir, mais, mais, j'ai beaucoup avancé aujourd'hui, et
je reste convaincu, qu'avec le peu de code que j'ai écrit, le framework
était de loin le meilleur choix, pour cette application là ...
Fred