Nanane Posté 28 Juin 2007 Posté 28 Juin 2007 Bonjour, Voila comme expliqué dans le titre, je me demandais s'il etait possible d'envoyer des données par la methode post a un script PHP. Je m'explique... L'utilisateur de mon bookmarklet va se promener sur son site, et trouver une page qu'il souhaiterai tagger pour qu'elle soit traduite par l'equipe de traducteurs. Et peut etre meme en bonus j'aimerai qu'il puisse selectionner ce qu'il souhaite faire traduire (un paragraphe par exemple). Une fois qu'il aurait fait sa sélection, mon script devra recuperer la selection (je ne sais meme pas si c'est faisable...) et l'url de la page pour les mettre dans une base de données (au passage il aura aussi demandé dans quelles langues traduire cette selection). Afin de former une liste des traductions a effectuer pour l'equipe des traducteurs. Dans ma tete le javascript va lancer un script PHP qui va recuperer les données et les intégrer a la base... mais comme je ne connais pas la taille de la selection que va faire l'utilisateur, j'aimerai les mettre en POST et pas en GET Voila, j'espere avoir été clair... Merci de votre attention
petit-ourson Posté 28 Juin 2007 Posté 28 Juin 2007 Peut être en utilisant la bibliothèque cURL : http://fr.php.net/manual/fr/ref.curl.php
Nanane Posté 28 Juin 2007 Auteur Posté 28 Juin 2007 Arf j'etait sur de ne pas avoir été assez clair En fait j'aimerai que par un simple bookmarklet, mon utilisateur puisse signaler que la page sur laquelle il est doit etre traduite. Comme ca il n'a qu'a naviguer sur le site, et a chaque page qu'il souhaite faire traduire, lancer le bookmarklet (et remplir un ptit formulaire pour le choix des langues) La partie en PHP est deja programmée en fait... ce qu'il me faut serait plus du ressort de Javascript, pour qu'il envoie a mon script PHP les données suivantes : - L'url de la page en cours (facile) - La selection faite par mon utilisateur sur cette page (a voir) - les langues dans lesquelles traduire cette selection (facile) Le truc etant que je ne peux pas les envoyer par formulaire avec la methode GET, vu que la selection faite par l'utilisateur peut faire 3 caractères, comme elle peut en faire 10 000... Et je voulais savoir s'il y avait une autre methode
Nanane Posté 28 Juin 2007 Auteur Posté 28 Juin 2007 j'ai tenté avec les methodes DOM de creer un formulaire et des <input type="hidden" ... > mais ca n'a pas l'air de fonctionner.
Nanane Posté 29 Juin 2007 Auteur Posté 29 Juin 2007 Une nouvelle encore J'ai trouvé ce petit tuto sur le net pour savoir comment faire des requetes HTTP en Javascript et récupérer les données... donc en gros, on peut valider un formulaire sans recharger la page... Je teste ca avec mon bookmarklet et je vous dis quoi http://robloche.free.fr/javascript/tuto_xhr/tuto_xhr.html
petit-ourson Posté 29 Juin 2007 Posté 29 Juin 2007 C'est ce qui est "populairement" appelé ajax. Ca devrait fonctionner. ;o)
Nanane Posté 29 Juin 2007 Auteur Posté 29 Juin 2007 Arf, il semblerait que ca fonctionne... mais avec Ajax, impossible de donner des noms aux variables stockant les données en POST... Sur le tuto tout est en PHP et un simple "while($_POST)" suffit... mais en Perl j'ai un doute...
maximettb Posté 30 Juin 2007 Posté 30 Juin 2007 Pas de différence de ce point de vue là entre Perl et PHP, les valeurs des champs sont envoyés de la même manière et ça ne change en rien la manière de les récupérer dans ton script. En gros, en Perl, un simple script comme le suivant fonctionne : #!/usr/bin/perluse CGI;my $cgi = new CGI;my $mon_parametre = $cgi->param('monParametre');
Nanane Posté 2 Juillet 2007 Auteur Posté 2 Juillet 2007 (modifié) Mon probleme venait que le parametre en question n'avait pas de nom par defaut et que je ne savait pas comment lui en donner un, ni comment recuperer un parametre sans nom en PHP ($cgi->param('') ne fonctionne pas ) mais j'ai trouvé en peu de temps comment lui donner un nom... il suffit juste d'envoyer avec la fonction "send($data)" une chaine du style "nomparam=valeur" comme en GET en fait... donc ma fonction send ressemble a ca : xhr_object.send("url="+window.location.pathname+"&select="+s2); Et j'arrive donc a rediriger sur mon script l'url de la page taggée, et la selection de l'utilisateur (avec une limite sur la taille, la limite des URL) Modifié 2 Juillet 2007 par Nanane
Nanane Posté 2 Juillet 2007 Auteur Posté 2 Juillet 2007 (modifié) Par contre petit souci, mon bookmarklet doit etre executable sur IE Et moi comme un bon vieil utilisateur confirmé, IE => connait pas ! Je n'ai aucune idée de ce qui cause le non fonctionnement... alors je vais juste vous donner le code en brut (rien de bien compliqué) Bookmarklet FF java script:(function(){ xhr_object=new XMLHttpRequest(); var method="POST"; var filename="/cgi-bin/web/ajoutett.pl"; var s2=window.getSelection(); xhr_object.open(method,filename,true); xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr_object.send("url="+window.location.pathname+"&select="+s2); xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4) { var tmp = xhr_object.responseText; document.write(tmp); } }}) () Bookmarklet IE java script: xhr_object=new ActiveXObject('Microsoft.XMLHTTP'); var method='POST'; var filename='/cgi-bin/web/ajoutett.pl'; var s2=window.getSelection(); xhr_object.open(method,filename,true); xhr_object.setRequestHeader('Content-type','application/x-www-form-urlencoded'); xhr_object.send('url='+window.location.pathname+'&select='+s2); xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4) { var tmp = xhr_object.responseText;document.write(tmp); } } Edit : Juste pour dire que IE me renvoie cette erreur : "Ligne1, caractère 109, Cet objet ne gère pas cette propriété ou cette méthode." Modifié 3 Juillet 2007 par Nanane
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant