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();
} |