mardi 18 novembre 2008 | Auteur : Camille
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] ) |
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
J’attend la version standalone avec impatience!
Super script !!
Merci 🙂
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();
}
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 !
Merci infiniment pour ce script ! J’en cherchais un comme celui-ci depuis longtemps !
Bravo !