Système un peu à la google traduction

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonsoir,

Alors voilà mon problème, j'ai 1 code php dans un fichier à part (fichier.php) qui a pour but de transformer un texte x en texte y.

Sur ma mise en page j'ai 2 textarea côte à côte.

Je souhaite donc que le texte entré dans le textarea 1 soit traité par mon code php (fichier.php) et que le résultats s'affiche dans le textarea 2.

Le tout dynamiquement un peu à la google traduction

J'ai des bases en jQuery, j'ai regardé un peu Ajax, essayé 2-3 trois trucs sans succès …

Merci de votre aide :)

PS: Si je n'est pas était clair faites le moi savoir

+0 -0
Auteur du sujet

Salut,

Je suis repartie de 0 pour le JS est ce qui est de PHP, le code récupère un $_POST, et se termine par un echo après traitement.

EDIT: J'aimerais qu'on m'explique d'un point de vue général merci

EDIT2: code JS (je ne sais pas quoi mettre dans data et dataType

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$.ajax({
      url : 'fichier.php',
      type : 'POST',
      data : '',
      dataType : '',
      success : function(){
        // Traitement
      }
      else{

 }
 }
});

Édité par anonyme

+0 -0

Cette réponse a aidé l'auteur du sujet

AJAX te permet de faire une requête HTTP sans recharger la page. C'est exactement comme si tu demandais à ton navigateur de consulter la page fichier.php : ce que tu obtiens à l'écran est ce que le script affiche. Sauf que dans le cas d'AJAX, ce n'est pas affiché à l'écran mais stocké dans une variable.

Comme lorsque tu envoies un formulaire ou que tu ajoutes la syntaxe ?param=value dans une url, AJAX te permet de passer des paramètres à ton script. Deux méthodes pour cela : GET ou POST. Je suis un peu rouillé en la matière, mais en gros GET c'est pour les trucs légers (un nombre, un mot…) et POST pour ceux plus lourds (un texte…). Dans ton cas, je te conseille d'utiliser POST.

Pour le code, si tu veux que je t'aide, il va falloir me présenter une ébauche et m'expliquer où ça coince.

+0 -0
Auteur du sujet

Merci pour l'explication c'est déjà plus clair

Mais je n'arrive pas à faire en sorte que le form soit envoyé chaque fois qu'on écrit dedans et comment récupérer la valeur de mon script php pour changer ensuite la valeur du textarea 2

Je doute que ce sois juste…

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
                      $.ajax({
                            url : 'fichier.php',
                            type : 'POST',
                            data : $('#textarea1').val(),
                            dataType : 'text',
                            success : function(){
                                    $('textarea2').val();
                                }
                                else{

                                }
                            }
                        });
+0 -0

La callback de succès prend un argument, dans lequel sera stocké ce que ton script PHP aura affiché.

A la ligne 7, il faut passer un argument à val.

Que fait le else ?

Pour l'envoi, il suffit de détecter l'évènement "keypress" sur ton textarea et d'exécuter la requête comme tu le fais.

+0 -0
Auteur du sujet

Donc si j'ai bien compris:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
                      $.ajax({
                            url : 'fichier.php',
                            type : 'POST',
                            data : {post: $('#textarea1').val()},
                            dataType : 'text',
                            success : function(result){
                                    $('#textarea2').val(result);
                                }
                            }
                        });

EDIT: Mon php vérifie un $_POST['message'], comment spécifié dans le code pour le 'cours', ça se passe dans le data ?

Édité par anonyme

+0 -0
Auteur du sujet

Résolu, le code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
                              $.ajax({
                                    url : 'fichier.php',
                                    type : 'POST',
                                    data : {message: $('#textarea1').val()},
                                    dataType : 'text',
                                    success : function(resultat){
                                        $('#textarea2').val(resultat);

                                        }
                                    }
                                );

Merci de ton aide Vayel

+0 -0

Pour rajouter sur ce qu'a dit Vayel, POST et GET c'est pas tout à fait ça.

Comme leurs noms l'indiquent, GET permet de recevoir une ressource du serveur, et POST permet de mettre une ressource sur le serveur. Dit autrement, un serveur recevant un GET ne doit pas changer son état interne et un POST doit le changer.

Ici, tu ne modifie rien sur le serveur, du coup, il faut utiliser GET.

Cela dit, tout ça c'est juste de la sémantique, dans les faits ça ne change rien.

+0 -0
Auteur du sujet

Pour rajouter sur ce qu'a dit Vayel, POST et GET c'est pas tout à fait ça.

Comme leurs noms l'indiquent, GET permet de recevoir une ressource du serveur, et POST permet de mettre une ressource sur le serveur. Dit autrement, un serveur recevant un GET ne doit pas changer son état interne et un POST doit le changer.

Ici, tu ne modifie rien sur le serveur, du coup, il faut utiliser GET.

Cela dit, tout ça c'est juste de la sémantique, dans les faits ça ne change rien.

Umbra

Pourtant $_POST me semble beaucoup plus approprié pour le traitement d'un formulaire

+0 -0

Y'a deux notions qui se collisionnent dans vos messages.

Tu parles de soumission de formulaire alors qu'en fait tu ne soumets rien du tout…

Vayel parle de method associée au traitement d'un formulaire (GET ou POST) en fonction de si on a juste un nombre ou du texte ( ? ) alors qu'en fait ce que tu fais c'est quasiment une API (tu accèdes à un service "comme Google traduction" via une requête HTTP), et ça tombe bien y'a un cours là-dessus sur le site.

C'est l'objet de la remarque de Umbra, qui ne méritait pas son -1.

Happiness is a warm puppy

+0 -0
Auteur du sujet

Y'a deux notions qui se collisionnent dans vos messages.

Tu parles de soumission de formulaire alors qu'en fait tu ne soumets rien du tout…

Vayel parle de method associée au traitement d'un formulaire (GET ou POST) en fonction de si on a juste un nombre ou du texte ( ? ) alors qu'en fait ce que tu fais c'est quasiment une API (tu accèdes à un service "comme Google traduction" via une requête HTTP), et ça tombe bien y'a un cours là-dessus sur le site.

C'est l'objet de la remarque de Umbra, qui ne méritait pas son -1.

Javier

Non je soumet bien un formulaire qui contient du texte donc j'utilise POST. Et je n'accède absolument pas à une API ou autre je conçois simplement un système qui d'aspect ressemble à google traduction.

Ensuite Umbra m'affirmait qu'il fallait utiliser GET hors j'ai tout un texte à traiter donc c'est simplement impossible avec GET.

Merci

+0 -1

Tu prends ton navigateur préféré, tu regardes comment fait Google translate, et tu verras que la remarque de Umbra est bien moins stupide que tu ne le penses.

Après t'as le droit d'être persuadé que ce que tu fais est juste, ne prends simplement pas les gens de haut quand ils tentent de t'expliquer quelque chose.

1
2
3
4
5
6
7
Remote Address:173.194.40.98:443

Request URL:https://translate.google.com/translate_a/single?client=t&sl=en&tl=fr&hl=fr&dt=bd&dt=ex&dt=ld&dt=md&dt=qc&dt=rw&dt=rm&dt=ss&dt=t&dt=at&ie=UTF-8&oe=UTF-8&otf=2&srcrom=0&ssel=0&tsel=0&tk=519129|886457&q=This%20is%20a%20long%20text%20just%20to%20show%20how%20query%20parameters%20can%20just%20contain%20a%20long%20text.%20Will%20Google%20ever%20use%20POST%20HTTP%20method%20to%20handle%20my%20translate%20request%20or%20will%20it%20just%20stick%20to%20GET%20method%20%3F%20I%27m%20wondering%2C%20that%27s%20why%20I%20keep%20typing%20without%20even%20wondering%20if%20what%20I%27m%20doing%20is%20good%20or%20bad.%20Don%27t%20know%20how%20far%20I%27ll%20go%20with%20this%20but%20it%27s%20just%20for%20educational%20purpose.

Request Method:GET

Status Code:200 OK

Sinon, tu peux aussi regarder ça

1.3 Quick Checklist for Choosing HTTP GET or POST

Use GET if: The interaction is more like a question (i.e., it is a safe operation such as a query, read operation, or lookup).

Use POST if: The interaction is more like an order, or The interaction changes the state of the resource in a way that the user would perceive (e.g., a subscription to a service), or The user be held accountable for the results of the interaction.

C'est très exactement ce qu'Umbra t'a signalé.

Après peut-être que c'est un "vrai" formulaire que tu soumets (avec plein de contrôles, qui modifie un état côté serveur, …), on ne peut pas le savoir sans voir ta page. Mais ça n'a pas l'air.

De ce que j'ai compris (tu as donné l'exemple de Google translate, je m'y fie), c'est une simple demande de ressource. Une requête, donc parfaitement dans le premier cas.

Édité par Javier

Happiness is a warm puppy

+1 -0
Auteur du sujet

Comme dis plus haut seul l'aspect visuel est le même que google trad, POST reste une meilleur solution dans mon cas étant donné que je traite mon formulaire.

Je pense que je me suis mal exprimé mais tu n'as pas vraiment compris ce que j'entendais par "un peu à la google traduction".

Sinon le sujet est résolu et je le redis vu le traitement qu'il y a derrière employer GET n'est pas la solution dans mon cas.

Use POST if: The interaction is more like an order, or The interaction changes the state of the resource in a way that the user would perceive (e.g., a subscription to a service), or The user be held accountable for the results of the interaction.

C'est exactement ce que je fais donc POST est bien la solution dans mon cas.

J'admet que sans le code ça peut être difficile de savoir mais si je vous dis que GET ne pourra pas m'être utile dans ce cas là, inutile d'insister.

+0 -1
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte