Bonjour,
j'aime beaucoup Prototype et j'aimerai l'utiliser dans une application Adobe Air.
J'ai bien lu la doc d'Adobe et j'ai bien compris que Prototype n'est pas officiellement supporté. Malgré tout, prototype fonctionne correctement (j'avoue ne pas utiliser le tiers des possibilités de Prototype, d'où le fait que je n'ai pas remarqué de désagrément).
Donc, Ajax.Updater fonctionne sauf que les scripts contenu dans la page appelé ne fonctionne pas (avec evalScript:true, bien sûr).
C'est normal, c'est un blocage natif de Adobe Air, question de sécurité. (c'est ce que j'ai compris).
Mon but, étant de faire un formulaire de login classique, passer ma requête vers un fichier PHP et renvoyer le résultat. Si le login est faux, ré-affiché le formulaire de login.
Mon fichier HTML
Mon fichier Javascript
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <!-- Formulaire dans ma page html --> <form method="post" target="_self" id="form_login"> <input type="text" name="login" id="login" size="12" value="Logi" onFocus="this.value='';"><br> <input type="password" name="pass" id="pass" size="12" value="Mot de Passe" onFocus="this.value='';"><br> <input type="submit" onclick="valid_connexion(); return false;" name="valid_connect" id="valid_connect" value="OK"> </form>
Mon fichier login.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 // j'envoie ma requet à login.php function valid_connexion() { new Ajax.Updater( 'sousmenu', 'http://localhost/login.php', { evalScripts: true, method: 'post', parameters: {valid_connect:$F('valid_connect'),login:$F('login'),pass:$F('pass')} } ) }
Lorsque mon formulaire, issu de de ma page HTML, est envoyé, tout ce passe bien. ma fonction JS est prise en compte.
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
23
24
25
26
27
28
29 // formulaire de login identique à ma page HTML function form_login() { echo '<form method="post" target="_self" id="form_login"> <input type="text" name="login" id="login" size="12" value="Logine" onFocus="this.value=\'\';"><br> <input type="password" name="pass" id="pass" size="12" value="Mot de Passe" onFocus="this.value=\'\';"><br> <input type="submit" onclick="valid_connexion(); return false;" name="valid_connect" id="valid_connect" value="OK"> </form>'; } // Si on clique sur OK dans le formulaire if (isset($_GET['valid_connect']) and $_GET['valid_connect'] == 'OK') { // Si mon formulaire est vide, j'affiche un message et je représente le formulaire if (empty($_GET['login']) and empty($_GET['pass'])) { echo 'Veuillez remplir tous les champs'; form_login(); } else { echo 'connexion OK'; } } else { form_login(); }
Lorsque mon formulaire, issu de ma page PHP, est envoyé, ma fonction JS n'est pas prise en compte. (Normal, du au limitation d'Adobe Air)
Donc, ma question :
Est-ce que quelqu'un saurait contourner ce problème "evalScript" ?
Ou bien, éventuellement, comment rappeler le formulaire de ma page HTML, si mon script PHP me renvoit une erreur de connexion ?
En espérant avoir été clair dans ma description et ne pas mettre tromper de forum.
Je remercie d'avance les bonnes âmes qui me répondront.
Partager