Aller au contenu

Envoi de données par "post"


Nanane

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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 :)

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Une nouvelle encore :D

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 :D

http://robloche.free.fr/javascript/tuto_xhr/tuto_xhr.html

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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/perl
use CGI;
my $cgi = new CGI;
my $mon_parametre = $cgi->param('monParametre');

Lien vers le commentaire
Partager sur d’autres sites

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 :D) 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é par Nanane
Lien vers le commentaire
Partager sur d’autres sites

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é par Nanane
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...