JQuery: Convertir l'URL GET en POST

Quelle est la manière la plus simple de convertir une chaîne d'URL GET en POST dans jQuery?

Par exemple, je veux les paramètres d'un lien

<a href="/somepage?x=1&amp;y=3" id="postlink">link</a> 

Pour être soumis sous POST onclic si javascript est activé. Non AJAX, formulaire normalement soumis.

Des idées?

Merci, Hannes.

Je viens d'écrire ce code, vérifiez s'il vous plaît, peut-être utile http://jsfiddle.net/AEwxt/

 $('#postlink').click(function() { var p = $(this).attr('href').split('?'); var action = p[0]; var params = p[1].split('&'); var form = $(document.createElement('form')).attr('action', action).attr('method','post'); $('body').append(form); for (var i in params) { var tmp= params[i].split('='); var key = tmp[0], value = tmp[1]; $(document.createElement('input')).attr('type', 'hidden').attr('name', key).attr('value', value).appendTo(form); } $(form).submit(); return false; }); 

Démo: http://jsfiddle.net/w5WA6/

 function getUrlVars(_url) { var vars = [], hash; var hashes = _url.slice(_url.indexOf('?') + 1).split('&'); for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; } var arVars = getUrlVars($("#test").attr("href")); for(var i=0;i<arVars.length;i++){ //put var in input for submition you can change type by `hidden` $("#myForm").append("<input type='text' value='"+arVars[arVars[i]]+"' name='"+arVars[i]+"'/>"); }​ 

Modifié un peu le code de Sergey, de sorte que, lorsque l'utilisateur «parvient» sur le lien, il n'indique pas la demande d'obtention.

Lien:

 <a href="#" postURL="/tpl/schRosterSearchSubmit.do?searchReci.uniqueId=&searchReci.studentId=&searchReci.schoolId=3205&searchReci.name.firstName=&searchReci.name.lastName=&searchReci.gender=&searchReci.rdobDay=&searchReci.rdobMonth=&searchReci.rdobYear=&searchReci.rssn1=&searchReci.rssn2=&searchReci.rssn3=&searchReci.phoneNumber=&searchReci.citzOrResAlien=&searchReci.country.isoCountryCode=&searchReci.address.street1=&searchReci.address.street2=&searchReci.address.city=&searchReci.address.state=&searchReci.address.zip=&searchReci.address.zipExt=&searchReci.parentN.firstName=&searchReci.parentN.lastName=&searchReci.parentEmail=&searchReci.parentMAddr.street1=&searchReci.parentMAddr.street2=&searchReci.parentMAddr.city=&searchReci.parentMAddr.state=&searchReci.parentMAddr.zip=&searchReci.parentMAddr.zipExt=&searchReci.parentPAddr.street1=&searchReci.parentPAddr.street2=&searchReci.parentPAddr.city=&searchReci.parentPAddr.state=&searchReci.parentPAddr.zip=&searchReci.parentPAddr.zipExt=&searchReci.pdobDay=&searchReci.pdobMonth=&searchReci.pdobYear=&searchReci.pssn1=&searchReci.pssn2=&searchReci.pssn3=&searchReci.parentCitzOrResAlien=&searchReci.parentCountry.isoCountryCode=&searchReci.addrUpdInd=&searchReci.inactiveDtDay=&searchReci.inactiveDtMonth=&searchReci.inactiveDtYear=&searchReci.ncoaUpdInd=&searchReci.badAddrInd=&branding=upromise&acct=XXXX&schRosterPager.offset=50" class="rnavLink">2nd Page results</a> 

Conversion sur POST onclick:

 <script type="text/javascript"> $(document).ready(function() { $('.rnavLink').click(function() { var p = $(this).attr('postURL').split('?'); var action = p[0]; var params = p[1].split('&'); var form = $('<form/>', {action:action, method:'post'}).appendTo('body'); for (var i in params) { var tmp = params[i].split('='); var key = tmp[0], value = tmp[1]; $('<input/>', {type:'hidden', name:key, value:value}).appendTo(form); } $(form).submit(); return false; }); }); 

Vous pouvez envoyer une entrée de formulaire en utilisant HTML <form method = "POST">

Bien que je ne soit pas tout à fait sûr de la raison derrière cela, si vous devez appliquer la partie javascript, il suffit de l'entourer du formulaire avec <form method = "GET"> avec une balise <noscript>.