Redirection Javascript avec données POST(ées)

Une fonction pour une redirection POST

Aujourd'hui je vais partager avec vous une fonction qui m'a été utile lors d'un développement. En effet, un client avait besoin de faire une redirection javascript vers une page qui demandait des envois des données en POST. Plutôt que de réécrire la page pour qu'elle accepte les données en GET j'ai préféré envoyer ces données en POST.
J'ai donc personnalisé (et documenté) une fonction trouvée sur StackOverflow pour qu'elle corresponde à mes besoins. Je souhaitais donc la partager.

Pour ceux qui utilise Django n'oubliez pas votre csrfmiddlewaretoken pour ne pas vous faire éjecter par la protection CSRF à la réception des données.

 /**
* Cette fonction permet d'effectuer une redirection Javascript
* en envoyant un dictionnaire de données en POST.
 * @param  {[string]} link [lien vers lequel sera dirigée la requête]        * @param  {[dictionnaire]} post_var [dictionnaires de données envoyées * en POST. Syntaxe = {id_tache: 'Faire à manger au chat !', periode: '120 * minutes'}] Ne pas oublier le csrfmiddlewaretoken.
 */
function redirect_post(link, post_var) {
var form = '';
$.each(post_var, function(key, value) {
form+='<input type="hidden" name="'+key+'" value="'+value+'">';
});
$('<form class="hidden" action="'+link+'" method="POST">'+form+'</form>').appendTo('body').submit();
}


Utilisation dans vos script

Voici un code d'exemple d'utilisation de la fonction :

var post_var = {id_tache: 'Faire à manger au chat !', periode: '120 minutes'};
var link="http://dauzon.com/i-dont-accept-get-request";
redirect_post(link, post_var);