banniere
mardi 18 novembre 2008 | Auteur :

Je pense que certains seront friands de ce genre de script, j’ai donc décidé de céder au public une part de mon médiocre génie !! Avant de comprendre le code, il faut piger l’astuce… Explications : On créé dynamiquement un formulaire avec JavaScript, on l’affiche en bas de la page (sinon ça ne marche pas, sont pas si cons les navigateurs…) puis on le submit dynamiquement une fois qu’il a été généré.

Avec jQuery

jQuery propose d’envoyer les données POST en AJAX, ce qui fait que vous pouvez carrément soumettre un formulaire sans quitter la page en cours :

jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )

Voir la doc jQuery.post

Avec Prototype

function openWithPostData(page,data)
{
    var form = new Element('form',{action:page,method:'post'});
    for (var n in data)
    {
        form.appendChild(new Element('input',{
            type:'hidden',
            name:n,
            value:data[n]}));
    }
    $$('body')[0].appendChild(form);
    form.submit();
}

Petits exemples d’application :

var data = {};
data.lang             = 'fr';
data.IDP              = 24;
data['acteur']        = 'Rocky';
data[prefixe + 'tel'] = '0421564878';
 
openWithPostData('index.php',data);
 
// OU tout simplement
 
openWithPostData('index.php',{lang:'fr',IDP:24});

En standalone : proposé par HugoPoi

function openWithPostData(page,data)
{
    var form = document.createElement('form');
    form.setAttribute('action', page);
    form.setAttribute('method', 'post');
    for (var n in data)
    {
        var inputvar = document.createElement('input');
        inputvar.setAttribute('type', 'hidden');
        inputvar.setAttribute('name', n);
        inputvar.setAttribute('value', data[n]);
        form.appendChild(inputvar);
    }
    document.body.appendChild(form);
    form.submit();
}
Categories : Informatique

Vous pouvez suivre toutes les réponses à cet article à travers ce flux RSS.
Vous pouvez laisser un commentaire, ou encore ajouter un lien.

5 commentaires

  1. 1
    Alex 

    J’attend la version standalone avec impatience!

  2. 2
    Bankette 

    Super script !!
    Merci 🙂

  3. 3
    HugoPoi 

    j’arrive un peu tard mais j’ai réecrit une version stand-alone de ta fonction pour faire un script useless : http://blog.hugopoi.net/2010/12/07/get-to-post/

    voila :
    function openWithPostDatav2(page,data)
    {
    var form = document.createElement(‘form’);
    form.setAttribute(‘action’, page);
    form.setAttribute(‘method’, ‘post’);
    for (var n in data)
    {
    var inputvar = document.createElement(‘input’);
    inputvar.setAttribute(‘type’, ‘hidden’);
    inputvar.setAttribute(‘name’, n);
    inputvar.setAttribute(‘value’, data[n]);
    form.appendChild(inputvar);
    }
    document.body.appendChild(form);
    form.submit();
    }

  4. 4
    rmz 

    Merci pour ce script !! Il est vraiment super !

    Vous devriez le poster sur developpez.net si ce n’est déjà fait ^^
    (dans la rubrique du forum webmasters-developpement-web/contribuez)

    Bonne journée et bonne continuation !

  5. 5
    Pascal L 

    Merci infiniment pour ce script ! J’en cherchais un comme celui-ci depuis longtemps !

    Bravo !

  6.  
  1.  
Laisser un commentaire