Formulaire problématique

Fermé
Pitouli Messages postés 59 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 31 janvier 2015 - 16 mars 2008 à 16:21
 Fernando "Malk" - 26 mai 2008 à 23:39
Bonjour !
J’aurais besoin d’aide pour une histoire de formulaire.
J’ai une page index.php constituée comme ci-dessous :

http://b.imagehost.org/0268/Sans-titre-1.png

La page index.php (en bleu foncé), contient entre autres divisons la division « corps » (en bleu clair).
Cette division « corps » change de contenu grâce à un include php.
Dans le cas qui m’intéresse, la division corps contient un include de la page « livre_or.php » (en rouge).

Cette page « livre_or.php, » se compose d’un formulaire permettant l’ajout de nouveaux messages, ainsi que de la liste des messages déjà postés. Quand on valide le formulaire, la page index.php est rechargée avec une variable en GET telle que la division « corps » affiche de nouveau « livre_or.php » en include.

Moi, ce que j’aimerai faire, c’est que, au lieu que toute la page ne se recharge quand l’utilisateur appuie sur le bouton [envoyer], il n’y ait que la page « livre_or.php » qui se recharge. Que la division « corps » si vous préférez.
En effet, je sais faire ne sorte que lorsque l’on clique sur un lien, seule la division que je choisi est rechargée avec une page externe, grâce à de l’ajax.
J’aimerai que ce soit exactement la même chose lorsque l’utilisateur appuie sur le bouton [envoyer].

Si vous n’arrivez pas à comprendre mon message, dites moi là où je m’explique mal, et je corrigerai ! Mais par pitié répondez-moi !

Merci d’avance,

Pitouli

5 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
16 mars 2008 à 17:04
Bonsoir,

En effet, je sais faire ne sorte que lorsque l’on clique sur un lien, seule la division que je choisi est rechargée avec une page externe, grâce à de l’ajax.

Si tu sais faire de l'Ajax avec un lien ,fais pareil avec le bouton

<input type"button" .......... onClick="appel_de_la_fonction_ajax();">
1
Pitouli Messages postés 59 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 31 janvier 2015 1
16 mars 2008 à 22:04
Merci de ton conseil, mais ça ne marche pas :

maintenant, quand on clique sur le bouton, la division se recharge effectivement, mais les données ne sont pas envoyées. Donc le message n'est pas ajouté au livre.

Tu peux m'aider encore un peu s'il te plait ?

Merci !

Pitouli
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > Pitouli Messages postés 59 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 31 janvier 2015
16 mars 2008 à 22:08
Dans les deux cas tu utilises la même fonction Ajax ?

Si oui comment as tu fait pour les arguments de cette fonction ?
0
Pitouli Messages postés 59 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 31 janvier 2015 1 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
17 mars 2008 à 17:35
J'utilise la même fonction. Mais mon ajax est un ajax simplifié (http://simplejs.bleebot.com/).

Voilà exactement ce que j'ai mis pour mon bouton :

<input value="Envoyer" onclick="$ajaxreplace('contenu','pages/livre_or.php', false); return false;" type="submit">

Premier argument : l'id de la div à remplacer. Second : la page à récupérer. Troisième : si il faut s'occuper du cache ou non (comme j'ai pas bien compris ce troisième argument, j'ai essayé avec true puis avec false. Dans les deux cas, ça marche pas).

Voilà, merci pour ton aide ! :)

Pitouli, qui espère que son problème va se régler...
0
Pitouli Messages postés 59 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 31 janvier 2015 1
17 mars 2008 à 17:51
PROBLÈME RÉGLÉ !!!!!

J'ai juste enlever le "return false", et ça marche !

Merci beaucoup à Alain_42 qui m'a donné la solution quasi sur un plateau ! :)

Je dirais même plus, merci BEAUCOUP à Alain_42 !!! :)

Et même plus ! :)

Pitouli

PS : on me me demande de récapituler la solution :
J'ai mis ceci :
<input value="Envoyer" onclick="$ajaxreplace('contenu','pages/livre_or.php', false);" type="submit">
Donc j'ai mis la fonction ajax directement dans le bouton submit.

Pitouli

PPS : encore merci Alain_42 !!! :)
0
Pitouli Messages postés 59 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 31 janvier 2015 1
17 mars 2008 à 17:52
En fait, c'est pas résolu ! :'(

J'ai été trompé par le fait qu'il y a effectivement mon joli dessin qui tourne indiquant le chargement de la div, avec tous les effets ajax liés.

Mais le problème, c'est que la page elle même se recharge aussi : dans firefox, l'onglet a son petit favicon qui se met à tourner.

Et l'url change aussi : au lieu de rester comme avant, il s'y rajoute index.php?page=lvre_or

Donc que puis je faire ?

Pitouli
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
17 mars 2008 à 18:44
Bonsoir,

une chose me parait étrange:

ton $ devant le nom de la fonction ajaxreplace et le return false


<input value="Envoyer" onclick="$ajaxreplace('contenu','pages/livre_or.php', false); return false;" type="submit">


Donnes nous le code de ta fonction et les deux appels (lien et bouton)
0
Pitouli Messages postés 59 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 31 janvier 2015 1
17 mars 2008 à 18:56
Pour le code de la fonction :
J'utilise deux javascript :
http://c-h-v.zzl.org/scripts/simple.js
ça c'est le framework global
http://c-h-v.zzl.org/scripts/simpleajax.js
et ça c'est celui qui permet d'utiliser la fonction.

par contre, les deux appels, je vois pas de quoi tu parles.

Je te donne le lien du site, comme ça tu pourras regarder le livre d'or.
http://ww12.zzl.org

Merci beaucoup de tes réponses rapides ! :)

Pitouli
0
Fernando &quot;Malk&quot;
19 mai 2008 à 21:42
Hello,

Sorry to post this in english, but I don't speak french, and I have been struggling with those same problems with simple.js. After some debug, I've found the root of it, and how to handle it, so I thought I'd share right at this forum so I could help since I used this topic to find a solution.

The problem is in the server. Script works, but server throws a "Method not allowed" error when you try to request an ajax response using POST. This is a server configuration, it doesn't allow the page to be fetched, so that's why you see the fade out but not the expected fade in. The script does catch the error, but it's status-handling functions, like onError, has no code, so that's why you don't get any errors, it is catched but not handled.

There's two answers to this: either you configure your server to allow those POST requests (haven't tried this one), or you can easily edit the line "this.method="POST";" in simpleajax.js and change to GET. It should work fine after this.

Another source of problems can be this piece of code also in simpleajax.js:

if(_b.responseStatus[0]==200){
_b.onCompletion();
}else{
_b.onError();
}

While I was trying to make it work on my local machine, just by opening the file on Firefox, code was working fine but the "OK status", which by this code should be 200, it was in fact 0. So, changing the "if" statement to check on 0 made my page works. When I uploaded to server, "OK status" was back to 200, so as you can see, this could be a try-and-see thing.

Another problem one could have, but not related to simple.js, is wrong encoding when the new page is fetched, even when main caller HTML specifies it. Just be sure to save the .html in the desired encoding, like UTF-8. Page will be fetched with it's native encoding and not with the encoding of the caller.

Hope this helps. SimpleJS is a good lightweight library, and I was hating to dispose of it just because some simple code was not working. Many hours of reading, trying, browsing forums and sweating, I finally got it to work. It was very confusing how some people could just use the library right away, and some just couldn't. But, fortunately I was able to pinpoint the problem.

Happy coding,
Fernando
0
Pitouli Messages postés 59 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 31 janvier 2015 1 > Fernando &quot;Malk&quot;
21 mai 2008 à 12:50
Good morning!

Thank you for your reply!

But I always have a small problem: even after changing the simpleajax.js, the problem remains.

Maybe this is my form is poorly constructed:

<form action="index.php?page=livre_or" method="post" >
<table border = "0" class="centre">
<tr>
<td class="droite"><strong>Pseudo :</strong></td>
<td class="gauche"><input name="pseudo" type="text" maxlength="40" /></td>
</tr>
<tr>
<td class="droite"><strong>Message :</strong></td>
<td class="gauche"><textarea name="message" rows="5" cols="60"></textarea></td>
</tr>
<tr>
<td colspan="2" class="centre"><input type="submit" value="Envoyer" onclick="$ajaxreplace('contenu','pages/livre_or.php', false); return false;" />

Can you tell me what you think please?

Thank you very much!

Pitouli

Sorry for my bad english !
0
Fernando &quot;Malk&quot; > Pitouli Messages postés 59 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 31 janvier 2015
26 mai 2008 à 23:39
My guess is, what you're trying to do is: send a form input to "livre_or.php", and have it shown by ajax on the same form page.
First problem I see is your form doesn't get sent at all - your onclick function returns false, which makes your submit button do nothing (it needs "return true", the default return value of any function, to work). You have to fix that, then see what could still be going wrong.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pitouli Messages postés 59 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 31 janvier 2015 1
20 mars 2008 à 20:46
Help ! :'(

Pitouli
0